使用java,如何将LinkedHashMap<String,Integer>按照值排序,并写出完整代码
时间: 2024-09-12 22:07:12 浏览: 17
在Java中,`LinkedHashMap`本身并不支持直接按照值进行排序。但是你可以通过自定义比较器(Comparator)并配合`Collections.sort()`函数来实现这个需求。下面是一个完整的示例代码:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
// 创建一个LinkedHashMap实例
LinkedHashMap<String, Integer> map = new LinkedHashMap<>();
// 添加一些元素
map.put("one", 5);
map.put("two", 1);
map.put("three", 3);
// 自定义排序规则,这里我们按值降序排序
Map.Entry<String, Integer>[] entries = map.entrySet().toArray(new Map.Entry[0]);
Arrays.sort(entries, (a, b) -> b.getValue() - a.getValue());
// 使用一个新的List存储排序后的键值对
List<Map.Entry<String, Integer>> sortedMap = new ArrayList<>(Arrays.asList(entries));
// 输出排序后的结果
for (Map.Entry<String, Integer> entry : sortedMap) {
System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
}
}
}
```
在这个例子中,我们首先创建了一个`LinkedHashMap`,然后将其转换为数组,并使用自定义的`Comparator`根据值进行降序排序。最后,我们将排序后的键值对放入一个新的列表中。