protected void decompressData ( ArrayList arr ) { HashMap fstData = null ; // The first data record (Map type) HashMap cprData ; // The following data record which will be compressed for ( Object sub : arr ) { if ( sub instanceof ArrayList ) { // iterate sub array nodes decompressData ( ( ArrayList ) sub ) ; } else if ( sub instanceof HashMap ) { // iterate sub data nodes decompressData ( ( HashMap ) sub ) ; // Compress data for current array if ( fstData == null ) { // Get first data node fstData = ( HashMap ) sub ; } else { cprData = ( HashMap ) sub ; // The omitted data will be recovered to the following map; Only data item (String type) will be processed for ( Object key : fstData . keySet ( ) ) { if ( ! cprData . containsKey ( key ) ) { cprData . put ( key , fstData . get ( key ) ) ; } } } } else { } } }
decompress the data in an ArrayList object