要按值对LinkedHashMap
以下是一个示例代码:
import java.util.*;
public class Main {
public static void main(String[] args) {
// 创建一个LinkedHashMap
LinkedHashMap map = new LinkedHashMap<>();
map.put("key1", new Json("value1"));
map.put("key3", new Json("value3"));
map.put("key2", new Json("value2"));
// 将LinkedHashMap的entrySet转换为List
List> list = new ArrayList<>(map.entrySet());
// 使用比较器对List进行排序
Collections.sort(list, new Comparator>() {
@Override
public int compare(Map.Entry o1, Map.Entry o2) {
// 根据Json的值来比较
return o1.getValue().compareTo(o2.getValue());
}
});
// 创建一个新的LinkedHashMap来存储排序后的键值对
LinkedHashMap sortedMap = new LinkedHashMap<>();
// 遍历排序后的List,将键值对添加到新的LinkedHashMap中
for (Map.Entry entry : list) {
sortedMap.put(entry.getKey(), entry.getValue());
}
// 输出排序后的结果
for (Map.Entry entry : sortedMap.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
static class Json implements Comparable {
private String value;
public Json(String value) {
this.value = value;
}
public String getValue() {
return value;
}
@Override
public int compareTo(Json o) {
// 根据value的字符串比较结果来排序
return value.compareTo(o.getValue());
}
}
}
运行上述代码,输出结果为:
key1: value1
key2: value2
key3: value3
排序后,LinkedHashMap中的键值对按值的顺序排序,同时保留了原始的键。