this question has answer here:
- how find object in arraylist property 5 answers
i have large list of tuples
list<tuple2<string,string> list;
what efficient way sweep search element retreive or modify it??
for eg:
string elementtosearch="l"; list={(a,hh)(b,rr)(c,kk)(d,jj)(l,mm).....} tuple2<string,string> result=(l,mm)
i tried using loop "for", worked, because s large list, not sure if best way it.
if first element of tuple key (no other tuples have same first element), need map...
note: duplicate keys, 1 doesn't work well: 1 retained!
map<string, string> mymap = new hashmap<>(); mymap.put("a", "bb"); //... string result = mymap.get("a"); //result "bb"
if first element not key, there might ("l","mm")
, ("l","ee")
too, bit more tricky:
// clarity, helper method private static <k,v> void add(map<k, set<v>> maptoadd, k key, v value) { set<v> innerset = maptoadd.get(key); if(innerset==null) { innerset = new hashset<>(); maptoadd.put(key, innerset); } innerset.add(value); } //... map<string, set<string>> mymap = new hashmap<>(); add(mymap, "l", "mm"); add(mymap, "l", "ee"); // searching, need helping method: private static <k,v> boolean find(map<k, set<v>> maptofind, k key, v value) { boolean found = false; set<v> settofind = maptofind.get(key); if(settofind!=null) { found = settofind.contains(value); } return found; } // result true: system.out.println(find(mymap,"l","mm")); // result true: system.out.println(find(mymap,"l","ee")); // result false: system.out.println(find(mymap,"l","mddddm"));
note: if there complete duplicates, 1 retains 1 of them!
Comments
Post a Comment