Take the 2-minute tour ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.

There are many posts regarding searching a Collection on stackoverflow. There are also many posts regarding sorting a Collection here. I am looking for a solution (data structure) that handles both. Maps are great for searching (i.e. map.containsKey(key), map.get(key)). ArrayLists are great for sorting (using a simple Comparator). My program adds elements to a HashMap (checking for dupes with .containsKey(key)). Then the map values get assigned to an Arraylist. This is simple (one line of code), yet terribly inefficient. It uses twice as much memory.

The program calls for unique elements, but what about duplicate elements? I have scanned the Javadocs and see that there are many Collection types for whatever flavor you need (map, list, table, set, tree, vector, priorityqueue-whatever that is). Is there ONE Java Collection that handles searching and sorting, including duplicate elements?

share|improve this question
add comment

2 Answers 2

Have you considered TreeMap?

The map is sorted according to the natural ordering of its keys, or by a Comparator provided at map creation time, depending on which constructor is used.

share|improve this answer
add comment

Have you tried a TreeMap. They going to be great for searching(O(ln n)) and are going to be sorted around a comparator that you can get using the .values() method.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.
{"cc_re__cc_re__cc_by_sa_3_0": ["        <li><a href=\"http://area51.stackexchange.com\" title=\"proposing new sites in the Stack Exchange network\">Area 51</a></li>\r\n                        <li><a href=\"http://careers.stackoverflow.com\">Stack Overflow Careers</a></li>\r\n                    \r\n                </ol>\r\n            </td>\r\n    </tr>\r\n</table>\r\n                </div>\r\n            </div>\r\n\r\n            <div id=\"copyright\">\r\n                site design / logo &#169; 2014 stack exchange inc; user contributions licensed under <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\" rel=\"license\">cc by-sa 3.0</a> \r\n                with <a href=\"http://blog.stackoverflow.com/2009/06/attribution-required/\" rel=\"license\">attribution required</a>\r\n            </div>\r\n            <div id=\"svnrev\">\r\n                rev 2014.7.22.1721\r\n            </div>\r\n            \r\n        </div>\r\n    </div>\r\n    <noscript>\r\n        <div id=\"noscript-warning\">Stack Overflow works best with JavaScript enabled<img src=\"http://pixel.quantserve.com/pixel/p-c1rF4kxgLUzNc.gif\" alt=\"\" class=\"dno\"></div>\r\n    </nos"], "copyright__copyright__copyright": [" at map creation time, depending on which constructor is used.\n\nshare|improve this answer\nadd comment\n\nHave you tried a TreeMap. They going to be great for searching(O(ln n)) and are going to be sorted around a comparator that you can get using the .values() method.\n\nshare|improve this answer\nadd comment\n\nYour Answer\n\n\u00a0\ndiscard\n\nBy posting your answer, you agree to the privacy policy and terms of service.\n\nNot the answer you're looking for? Browse other questions tagged or ask your own question."]}