Choosing the data structure for orgaininsng data with list of values in java -


i have map shown below in there key , values of type list:

map<string, list<string> newdatamap = new hashmap<>(); map.put ("rtyname", arrays.aslist("wpn", "wpfnb", "dgeft", "xbthy")); map.put ("rtyrate", arrays.aslist("dd", "ww", "trrty", "httyure")) 

i'd add map on previous map, such there key , value above map. correct data structure, , how implement it?

i want shown below

key         value  b1          rtyname  ----> "weepn", "weepfnb", "eedgeft", "xbteehy"             rtyrate ----->"deed", "ww", "terrty", "hteetyure"    b2          rtyname  ----> "sssweepn", "wpefsssnb", "ggegdgeft", "xbteyyyyhy"             rtyrate ----->"wwded", "wtetyw", "yyyytrerty", "iiiehttyure" 

as shown above, new key been introduced map, , value previous map.

so map<string, map<string, list<string>>> whis becomes complex data structure can organise data structure example 1 class containing map, like

map<b1 , rtyname> map<b2 ,rtyrate> 

and payer nae contain list of values such

 rtyname  ----> "sssweepn", "wpefsssnb", "ggegdgeft", "xbteyyyyhy"   rtyrate ----->"deed", "ww", "terrty", "hteetyure" 

so in above structure complexity low since @ end b1 have search key wiil rtyname , against payer name further have search values "wpn", "wpfnb", "dgeft", "xbthy"

please advise whheteher map best or there other better data structure obtain .

one data structure coming in mind of guava's table

  final table<string, string, list<string>> values = hashbasedtable.create(); values.put("b1", "rtyname", lists.newarraylist("weepn", "weepfnb", "eedgeft", "xbteehy")); system.out.println(values.get("b1", "rtyname")); // prints list 

my objective data structure can have in against b1 rtyname , rtyname possible list of values

i this:

map<integer, list<string>> datamap = new hashmap<>(); datamap.put("b1".hashcode()+"rtyname".hashcode(), arrays.aslist("weepn", "weepfnb", "eedgeft", "xbteehy")); datamap.put("b1".hashcode()+"rtyrate".hashcode(), arrays.aslist("deed", "ww", "terrty", "hteetyure")); datamap.put("b2".hashcode()+"rtyname".hashcode(), arrays.aslist("sssweepn", "wpefsssnb", "ggegdgeft", "xbteyyyyhy")); datamap.put("b2".hashcode()+"rtyrate".hashcode(), arrays.aslist("wwded", "wtetyw", "yyyytrerty", "iiiehttyure")); 

which represent:

b1, rtyname  ----> "weepn", "weepfnb", "eedgeft", "xbteehy" b1, rtyrate ----->"deed", "ww", "terrty", "hteetyure"  b2, rtyname  ----> "sssweepn", "wpefsssnb", "ggegdgeft", "xbteyyyyhy" b2, rtyrate ----->"wwded", "wtetyw", "yyyytrerty", "iiiehttyure" 

note hashcode convient function string class meets needs. roll own returns string key (or else) if preferred.

actually since original method didn't require order independent function, concatenate string keys use new key:

datamap.put("b1"+"rtyname", arrays.aslist(/*your list here*/)); 

this little less convenient (and not "good" programmatically) first method, still better nesting map classes. (and makes keys easier recognize when outputted hashcode.)

two-way mapping

values keys

if want each list value map keys other way around, need second map:

map<list<string>, string> valuemap = new hashmap<>(); //new map value->key  for(string key: datamap.keyset()) //get keys     valuemap.put(datamap.get(key), key); //create mapping value->key 

each item in value key

if want each string item in values list map keys other way around, need second map:

map<string, string> itemmap = new hashmap<>(); //new map item->key mapping     for(string key: datamap.keyset()) //get keys , iterate through         for(string item: datamap.get(key)) //for each item in value list             itemmap.put(item, key); //create new mapping item->key 

Comments

Popular posts from this blog

powershell Start-Process exit code -1073741502 when used with Credential from a windows service environment -

twig - Using Twigbridge in a Laravel 5.1 Package -

c# - LINQ join Entities from HashSet's, Join vs Dictionary vs HashSet performance -