一个Map<String, List<String>> 中将其中的元素按照value中的List长度排序
时间: 2023-11-11 22:50:36 浏览: 162
Java中 List《map》把里面map中某个key相同记录的其他key 的 value 合并
要对`Map<String, List<String>>`中的元素按照value中的List长度进行排序,可以使用`Comparator.comparingInt()`方法并传入一个lambda表达式来指定排序的条件。下面是一个示例代码:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
Map<String, List<String>> map = new HashMap<>();
map.put("group1", Arrays.asList("apple", "banana", "orange"));
map.put("group2", Arrays.asList("kiwi", "grape"));
map.put("group3", Arrays.asList("watermelon", "pear", "melon", "pineapple"));
List<Map.Entry<String, List<String>>> sortedEntries = new ArrayList<>(map.entrySet());
Collections.sort(sortedEntries, Comparator.comparingInt(entry -> entry.getValue().size()));
for (Map.Entry<String, List<String>> entry : sortedEntries) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
}
```
在这个示例中,我们创建了一个`Map<String, List<String>>`对象`map`,其中包含了几个分组的字符串列表。为了对`map`中的元素按照value中的List长度进行排序,我们首先将`map.entrySet()`转换为一个`List<Map.Entry<String, List<String>>>`对象`sortedEntries`,然后使用`Collections.sort()`方法结合`Comparator.comparingInt()`来进行排序。在比较器中,我们通过lambda表达式`entry -> entry.getValue().size()`提取了value的List长度作为比较的依据。
最后,我们迭代排序后的结果并打印输出。运行上述代码,输出将会按照value中的List长度升序排列的结果,例如:
```
group2: [kiwi, grape]
group1: [apple, banana, orange]
group3: [watermelon, pear, melon, pineapple]
```
可以看到,输出的结果按照value中的List长度从短到长进行了排序。
阅读全文