То, что я считаю очень незначительным улучшением вашего метода:
Queue queue = new PriorityQueue( map.size(), new MapComparable() );
queue.addAll( map.entrySet() );
LinkedHashMap<String, Long> linkedMap = new LinkedHashMap<String, Long>();
for (Map.Entry<String, Long> entry; (entry = queue.poll())!=null;) {
linkedMap.put(entry.getKey(), entry.getValue());
}
Другими словами, выполните сортировку с помощью структуры данных, предназначенной для сортировки.
Как общее примечание, код типа
for (Map.Entry<String, Long> entry : map.entrySet()) {
list.add(entry);
}
Можно сократить до:
list.addAll( map.entrySet() );
всякий раз, когда вы имеете дело с Collection
с.
Также я думаю, что это:
public int compare(Entry<String, Long> e1, Entry<String, Long> e2) {
return e1.getValue().compareTo(e2.getValue());
}
чище.