java - what is the most efficient way to sweep a list -


this question has answer here:

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