java - Hashmap's getValue returns Object -


i've got following data structure:

cfu66=[{bild1=cfu6606}, {bild2=cfu6603}, {bild3=cfu6605}, {bild4=cfu6601}, {bild5=cfu6602}] 

structure: hashmap_1(string key, list(hashmap_2(string key, string value)))

i'm trying access values hashmap_2:

// each hashmap_1 entry (map.entry<string, list> csvdictentry : csvdict.entryset()) {    // each list in entry.getvalue    (list<hashmap> hashlist : csvdictentry.getvalue()) {       // each hashmap_2 in list       (hashmap<string, string> hashlistdict : hashlist) {          // each entry in hashmap_2 print value          (map.entry<string, string> entry :hashlistdict.entryset()){             system.out.println(entry.getvalue());          }       }    } } 

the compiler gives message, csvdictentry.getvalue() in second for-loop returns object instead of hashmap. why?

however, i'm pretty new java , i'm sure there more convenient way this.

based on

for (map.entry<string, list> csvdictentry : csvdict.entryset()) { 

i assume type of csvdict

map<string, list> csvdict = ...; 

where based on data example cfu66=[{bild1=cfu6606}, {bild2=cfu6603}, {bild3=cfu6605}, {bild4=cfu6601}, {bild5=cfu6602}]

it should

map<string, list<map<string,string>>> csvdict = ...; 

problem reference type list raw-type, means actual type unknown (it can store kind of objects) object type compiler assumes when trying iterate on such list when expect

for (type t : list<type>) 

for raw type getting

for (object o : rawlist) 

other problem way iterating because if change reference proper type

for (list<hashmap> hashlist : csvdictentry.getvalue()) 

will not compile because getvalue() returns list<hashmap> loop iterate on hashmaps, not list of hashmaps should

for (hashmap hashlist : csvdictentry.getvalue()) 

hint: try avoid concrete types in generics, use parent type if possible, interface or abstract type. allow later changing actual type, instance hashmap linkedhashmap.

so iteration should

for (map.entry<string, list<map<string, string>>> csvdictentry : csvdict.entryset()) {     // each map in list stored value     (map<string, string> hashlistdict : csvdictentry.getvalue()) {         // each entry in hmap_2 print value         (map.entry<string, string> entry : hashlistdict.entryset()) {             system.out.println(entry.getvalue());         }     } } 

demo


btw in java 8 code simplified to

    csvdict.entryset().stream()     .flatmap(m -> m.getvalue().stream())     .flatmap(m -> m.values().stream())     .foreach(system.out::println); 

Comments

Popular posts from this blog

javascript - Karma not able to start PhantomJS on Windows - Error: spawn UNKNOWN -

Nuget pack csproj using nuspec -

c# - Display ASPX Popup control in RowDeleteing Event (ASPX Gridview) -