Map<String,List>怎么根据 value 的size值 进行排序?
时间: 2024-04-15 22:27:47 浏览: 144
您可以使用`Collections.sort()`方法来根据值的大小进行排序。首先,您需要将`Map`的键值对转换为`List`集合,然后使用自定义的比较器来比较每个值的大小。下面是一个示例代码:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
Map<String, List<Integer>> map = new HashMap<>();
map.put("A", Arrays.asList(1, 2, 3));
map.put("B", Arrays.asList(4, 5));
map.put("C", Arrays.asList(6, 7, 8, 9));
List<Map.Entry<String, List<Integer>>> list = new ArrayList<>(map.entrySet());
// 使用自定义的比较器进行排序
Collections.sort(list, new Comparator<Map.Entry<String, List<Integer>>>() {
@Override
public int compare(Map.Entry<String, List<Integer>> o1, Map.Entry<String, List<Integer>> o2) {
return o1.getValue().size() - o2.getValue().size();
}
});
// 打印排序后的结果
for (Map.Entry<String, List<Integer>> entry : list) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
}
```
输出结果:
```
B: [4, 5]
A: [1, 2, 3]
C: [6, 7, 8, 9]
```
在上述示例中,我们创建了一个包含不同大小的列表的`Map`,然后将其转换为`List`集合。接下来,我们使用自定义的比较器来比较每个值的大小,并使用`Collections.sort()`方法对列表进行排序。最后,我们按照排序后的顺序打印键值对。
阅读全文