按值使用TreeMap或LinkedHashMap对HashMap进行排序的性能

时间:2015-07-13 17:41:30

标签: java performance sorting hashmap treemap

我目前正在按值对HashMap进行排序,并且想知道如果使用类似TreeMap的排序更好的话,性能是否会更好。

我知道HashMap有o(1)时间的插入和排序复杂性,java中的树排序将采用log(n)(我相信),但我想知道HashMap实际排序的成本是多少。

我目前正在排序:

 public static HashMap sortByValue(Map unsortMap) {
    List list = new LinkedList(unsortMap.entrySet());

    Collections.sort(list, new Comparator() {
        public int compare(Object o1, Object o2) {
            return ((Comparable) ((Map.Entry) (o2)).getValue())
                    .compareTo(((Map.Entry) (o1)).getValue());
        }
    });

    HashMap sortedMap = new LinkedHashMap();
    for (Iterator it = list.iterator(); it.hasNext();) {
        Map.Entry entry = (Map.Entry) it.next();
        sortedMap.put(entry.getKey(), entry.getValue());
    }
    return sortedMap;
}

哪种方法最好用?为什么?

编辑:我的意思是搜索,而不是排序复杂性。

0 个答案:

没有答案