List<List<String>> 用stream 如何分组
时间: 2023-11-11 08:01:44 浏览: 82
可以使用Collectors.groupingBy方法来对List<List<String>>进行分组。具体实现如下:
```
List<List<String>> list = new ArrayList<>();
// 假设list已经被赋值
Map<String, List<List<String>>> groupMap = list.stream()
.collect(Collectors.groupingBy(l -> l.get(0))); // 以每个子集的第一个元素分组
```
以上代码将会把list中的子集按照第一个元素进行分组,分组后的结果是一个Map对象,其中键为第一个元素,值为该元素所在的所有子集。
相关问题
stream流List<Map<String, String>>转Map<String, String>
stream流可以将List<Map<String, String>>转换为Map<String, String>。可以使用Collectors.toMap()方法,该方法需要两个参数,第一个参数是key的提取函数,第二个参数是value的提取函数。具体实现可以参考以下代码:
Map<String, String> map = list.stream().collect(Collectors.toMap(map -> map.get("key"), map -> map.get("value")));
其中,list是一个List<Map<String, String>>类型的列表,map.get("key")和map.get("value")分别是提取key和value的函数。
list<Map<String,String>>用stream流过滤出一个map<String,String>
的列表中key为特定值的所有map
对于这个问题,我可以提供以下代码:
List<Map<String, String>> list = new ArrayList<>();
Map<String, String> map1 = new HashMap<>();
map1.put("key1", "value1");
map1.put("key2", "value2");
list.add(map1);
Map<String, String> map2 = new HashMap<>();
map2.put("key1", "value3");
map2.put("key2", "value4");
list.add(map2);
String specialKey = "key1";
List<Map<String, String>> filteredList = list.stream()
.filter(map -> map.containsKey(specialKey))
.collect(Collectors.toList());
这段代码可以筛选出所有key为"key1"的map,将它们收集到一个列表中返回。希望这个回答能够帮到你!
阅读全文