java - Map<String, Integer> and Map<Integer ,String> sorting -
i trying resolve sorting map , contains huge data(1000k). there efficient way sorting these maps ? below code snippet.
map<integer, string> mymap1 = new hashmap<integer, string>(); map<string,integer> mymap2 = new hashmap< string,integer>(); list <entry<integer,string>> lst1 = new arraylist<entry<integer,string>>(mymap1.entryset()); collections.sort(lst1, new comparator<entry<integer,string>>(){ @override public int compare(entry e1, entry e2) { return ((string) e1.getvalue()).compareto((string) e2.getvalue()); }} ); list <entry<string,integer>> lst2 = new arraylist<entry<string,integer>>(mymap2.entryset()); collections.sort(lst2, new comparator<entry<string,integer>>(){ @override public int compare(entry e1, entry e2) { return ((integer) e1.getvalue()).compareto((integer) e2.getvalue()); }} );
imo priority queue can approach:
map<integer, string> mymap1 = new hashmap<integer, string>(); priorityqueue<entry<integer, string>> pq = new priorityqueue<map.entry<integer,string>>(mymap1.size(), new comparator<entry<integer, string>>() { @override public int compare(entry<integer, string> arg0, entry<integer, string> arg1) { return arg0.getvalue().compareto(arg1.getvalue()); } }); pq.addall(mymap1.entryset()); while (!pq.isempty()) { system.out.println(pq.poll()); }
also google guava can option provides bimap implementations can inversed, , sort on inversed map keys.
map<integer, string> mymap1 = new hashmap<integer, string>(); // insert values in mymap map<string,integer> mymap2 = mymap1.inverse(); sortedmap<integer, character> sortedinversed = new treemap<integer, character>(mymap2 );
Comments
Post a Comment