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
Post a Comment