如何根据LinkedHashMap的值和LinkedHashMap包含String和Integer来对LinkedHashMap进行排序。所以我需要根据整数值进行排序。 非常感谢Sorting LinkedHashMap
33
A
回答
26
这是现在更容易与Java 8流了不少:你不需要中间地图排序:
map.entrySet().stream()
.sorted(Map.Entry.comparingByValue())
.forEach(entry -> ...);
4
66
List<Map.Entry<String, Integer>> entries =
new ArrayList<Map.Entry<String, Integer>>(map.entrySet());
Collections.sort(entries, new Comparator<Map.Entry<String, Integer>>() {
public int compare(Map.Entry<String, Integer> a, Map.Entry<String, Integer> b){
return a.getValue().compareTo(b.getValue());
}
});
Map<String, Integer> sortedMap = new LinkedHashMap<String, Integer>();
for (Map.Entry<String, Integer> entry : entries) {
sortedMap.put(entry.getKey(), entry.getValue());
}
+4
那么该死的,我写的是完全相同的代码! :)除了最后一部分,我不认为OP实际上需要将它们放回地图中。 –
+0
非常感谢。非常有用的一段代码 – Ramin
+0
很好的答案。我必须按降序排序,并在比较器返回值时添加-ve符号。 –
1
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.NavigableMap;
import java.util.SortedMap;
import java.util.TreeMap;
public class HashMapTest {
public static void main(String[] args) {
Map<String, Integer> map=new LinkedHashMap<String, Integer>();
map.put("a", 11);
map.put("B", 12);
map.put("c", 3);
map.put("d", 4);
map.put("e", 5);
map.put("f", 6);
map.put("g", 7);
map.put("h", 8);
map.put("i", 9);
map.put("j", 3);
map.put("k", 2);
map.put("l", 1);
List<Map.Entry<String, Integer>> entries = new
ArrayList<Map.Entry<String, Integer>>(map.entrySet());
Collections.sort(entries,new CustomizedHashMap());
Map<String, Integer> sortedMap = new LinkedHashMap<String,
Integer>();
for (Map.Entry<String, Integer> entry : entries) {
sortedMap.put(entry.getKey(), entry.getValue());
System.out.print(sortedMap.put(entry.getKey(),
entry.getValue())+" ");
}
}
}
class CustomizedHashMap implements Comparator<Map.Entry<String, Integer>> {
@Override
public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
// TODO Auto-generated method stub
return -o1.getValue().compareTo(o2.getValue());
}
}
相关问题
- 1. LinkedHashMap排序
- 2. Sorting Array,Sorting ArrayList,using Collections
- 3. Sorting QTreeWidget
- 4. Firebase Sorting
- 5. Datatable sorting
- 6. Sorting UITableView
- 7. Sorting HashMap
- 8. AppleScript:Finder Sorting
- 9. Sorting Anagrams
- 10. mySQL:Physical Sorting
- 11. Sorting Headers
- 12. Sorting Columns
- 13. Datatables sorting varchar
- 14. Sorting TableView Row
- 15. Sorting DataTable C#
- 16. Java- Sorting int array
- 17. Tkinter Treeview Column Sorting
- 18. Sorting a Meteor Cursor
- 19. Sorting an Array
- 20. Sorting ListBox Items
- 21. Extjs grid sorting
- 22. QFileSystemModel sorting DirsFirst
- 23. Sorting QObject children
- 24. Sorting RSS Feeds
- 25. Sorting of ListItems
- 26. Bash Sorting STDIN
- 27. Array Sorting and Merging
- 28. Sorting arraylist错误?
- 29. Sorting NSString of Numbers
- 30. Sorting panelgrid JSF
你必须使用一个LinkedHashMap的? TreeMap可能有帮助吗? – RNJ
这可能有助于http://stackoverflow.com/questions/780541/how-to-sort-hash-map – RNJ
哦。我懂了。没有仔细阅读评论。^_^ – DankMemes