Map<String,Map<String, List<String>>> 根据value中list的size排序
时间: 2023-10-14 16:17:59 浏览: 38
你可以使用Java 8 Stream API中的sorted方法和Comparator来根据value中list的size排序。以下是示例代码:
```
Map<String, Map<String, List<String>>> map = new HashMap<>();
// 假设map中已经有数据
// 根据value中list的size排序
Map<String, Map<String, List<String>>> sortedMap = map.entrySet()
.stream()
.sorted(Comparator.comparing(entry -> entry.getValue().values().stream().mapToInt(List::size).sum()))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue, LinkedHashMap::new));
```
这将返回一个新的已排序的LinkedHashMap,其中每个entry的value中的list按照它们的size进行排序。
相关问题
Map<String,List>怎么根据 value 的size值 进行排序?
您可以使用`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()`方法对列表进行排序。最后,我们按照排序后的顺序打印键值对。
Map<String,Map<String, List<String>>> 按照value中的list数量进行排序,
要按照value中的list数量进行排序,可以使用Java 8的Stream API和Comparator进行操作。具体实现如下:
```java
Map<String,Map<String, List<String>>> map = new HashMap<>();
// 假设map已经被初始化并填充了数据
List<Map.Entry<String, Map<String, List<String>>>> list = new ArrayList<>(map.entrySet());
// 按照value中的list数量进行排序
Collections.sort(list, Comparator.comparingInt(entry -> entry.getValue().size()));
// 打印排序结果
for (Map.Entry<String, Map<String, List<String>>> entry : list) {
System.out.println(entry.getKey() + " : " + entry.getValue());
}
```
首先将Map中的每个键值对转换为一个Map.Entry对象,并放入一个List中。然后使用Comparator.comparingInt方法指定按照value的List的大小进行排序。最后遍历排好序的List并打印结果。