Stream对list<map>排序
时间: 2023-12-09 22:04:33 浏览: 36
可以使用Java 8中的Stream API和Comparator接口,对List<Map>进行排序。假设有一个List<Map<String, Integer>>,其中每个Map包含两个键值对,分别是"name"和"age",要按照"age"属性进行排序,可以这样实现:
```
List<Map<String, Integer>> list = new ArrayList<>();
// 添加元素到list中
List<Map<String, Integer>> sortedList = list.stream()
.sorted(Comparator.comparingInt(map -> map.get("age")))
.collect(Collectors.toList());
```
这里使用了Stream的sorted()方法,传入一个Comparator对象,Comparator.comparingInt()方法返回一个比较器,根据Map中"age"属性的值进行比较。最后用collect()方法将排序后的结果作为List返回。
相关问题
stream流List<map>
stream流是Java 8引入的一种用于处理集合数据的功能。它提供了一种流式处理集合元素的方式,可以进行过滤、映射、排序等操作。
List是Java中的一种集合类型,可以存储多个元素,而Map则是一种键值对的数据结构。
如果你想对List中的每个元素进行操作,并将结果存储到Map中,可以使用stream流来实现。下面是一个示例代码:
```java
List<Map<String, Object>> list = new ArrayList<>();
// 假设list中已经有了一些元素
Map<String, Object> resultMap = list.stream()
.filter(map -> map.get("key").equals("value")) // 过滤条件,根据需要修改
.map(map -> {
// 对元素进行操作,根据需要修改
map.put("newKey", "newValue");
return map;
})
.collect(Collectors.toMap(map -> map.get("key").toString(), map -> map)); // 将结果收集到Map中
// 输出结果
resultMap.forEach((key, value) -> System.out.println(key + ": " + value));
```
以上示例代码演示了使用stream流对List中的元素进行过滤和映射操作,并将结果存储到Map中。你可以根据实际需求修改过滤条件和映射操作的逻辑。
Stream将list<map>转成list<Map<String,Object>>并排序
可以按照以下步骤将list<map>转成list<Map<String,Object>>并排序:
1. 遍历list<map>,将每个map转成Map<String,Object>类型,并添加到新的List中。可以使用Java8的Stream API来实现,代码如下:
```
List<Map<String, Object>> newList = oldList.stream()
.map(map -> new HashMap<String, Object>(map))
.collect(Collectors.toList());
```
2. 使用Collections.sort()方法对新的List进行排序。可以自定义Comparator来指定排序规则,比如按照某个键值的大小进行排序。代码如下:
```
Collections.sort(newList, new Comparator<Map<String, Object>>() {
@Override
public int compare(Map<String, Object> o1, Map<String, Object> o2) {
// 比较规则,比如按照键值为"age"的大小进行排序
return Integer.compare((int) o1.get("age"), (int) o2.get("age"));
}
});
```
注意,这里我假设每个map中都包含一个名为"age"的整型键值,你需要根据实际情况来修改比较规则。