hashmap 按照value排序 java
时间: 2023-05-03 22:04:46 浏览: 110
在Java中,可以使用TreeMap来按照value对HashMap进行排序。TreeMap是一种基于红黑树实现的有序的映射表,可以按照key或者value进行排序。
首先,需要将HashMap中的键值对转化为Entry对象,然后使用Comparator比较value的大小,最后将Entry对象放入TreeMap中即可。
以下是实现代码:
HashMap<String, Integer> hashMap = new HashMap<String, Integer>();
// 在hashMap中添加键值对
TreeMap<String,Integer> sortedMap = new TreeMap<>(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return hashMap.get(o1).compareTo(hashMap.get(o2));
}
});
sortedMap.putAll(hashMap);
System.out.println(sortedMap);
这样就可以按照value将HashMap进行排序,并输出排好序的键值对。
相关问题
java中hashmap按value排序
Java中的HashMap是无序的,它不支持按照value排序。如果需要按照value排序,可以将HashMap中的键值对转换为List,然后使用Collections.sort()方法对List进行排序,最后再将排序后的List转换为HashMap。具体实现可以参考以下代码:
```
// 创建一个HashMap
HashMap<String, Integer> map = new HashMap<>();
map.put("A", 10);
map.put("B", 5);
map.put("C", 20);
map.put("D", 15);
// 将HashMap转换为List
List<Map.Entry<String, Integer>> list = new ArrayList<>(map.entrySet());
// 使用Collections.sort()方法对List进行排序
Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
@Override
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
return o1.getValue().compareTo(o2.getValue());
}
});
// 创建一个新的有序HashMap
LinkedHashMap<String, Integer> sortedMap = new LinkedHashMap<>();
for (Map.Entry<String, Integer> entry : list) {
sortedMap.put(entry.getKey(), entry.getValue());
}
// 输出排序后的HashMap
System.out.println(sortedMap);
```
输出结果为:{B=5, A=10, D=15, C=20},即按照value从小到大排序的HashMap。
hashmap按照value大小排序
Java中可以使用TreeMap来实现对HashMap的按值排序。TreeMap内部使用红黑树实现,会自动按照Key进行排序,但也可以通过实现Comparator接口并重写compare方法来按照Value排序。代码示例如下:
```
Map<String, Integer> map = new HashMap<>();
map.put("A", 3);
map.put("B", 1);
map.put("C", 2);
// 通过实现Comparator接口实现按照Value排序
TreeMap<String, Integer> sorted = new TreeMap<>(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return map.get(o1).compareTo(map.get(o2));
}
});
sorted.putAll(map);
System.out.println(sorted);
```
输出结果:
```
{B=1, C=2, A=3}
```
阅读全文