stream java如何取出集合里面的两个字段并封装为另一个集合
时间: 2024-05-12 14:14:54 浏览: 23
可以使用Java 8的Stream API来完成这个任务。假设你有一个包含对象的集合,每个对象都有两个字段`field1`和`field2`。你想要从这个集合中取出这两个字段,并将它们封装为另一个对象的集合。以下是一种可能的实现方法:
```java
List<OriginalObject> originalList = ...; // 原始集合
List<NewObject> newList = originalList.stream()
.map(o -> new NewObject(o.getField1(), o.getField2())) // 将原始对象转换为新对象
.collect(Collectors.toList()); // 封装为新的集合
```
这个代码片段使用了`map()`方法将原始对象转换为新对象,然后使用`collect()`方法将转换后的对象收集到一个新的集合中。`NewObject`是一个包含`field1`和`field2`字段的对象,你需要根据自己的需求来定义它。
相关问题
在java 8中stream list集合根据两个字段降序排列
在Java 8中,你可以使用Stream API和Comparator来实现根据两个字段进行降序排列,代码如下:
```java
list.stream()
.sorted(Comparator.comparing(Object::getA)
.thenComparing(Object::getB, Comparator.reverseOrder()))
.collect(Collectors.toList());
```
其中,sorted()方法使用Comparator进行排序,Comparator.comparing(Object::getA)表示先按照属性A进行排序,thenComparing(Object::getB, Comparator.reverseOrder())表示在属性A相同时,按照属性B的降序排列。最后使用collect()方法将排序后的结果转换为List集合。
java两个Map集合Stream为一个list集合最优案例
假设有两个Map集合,分别是map1和map2,我们想要将它们合并为一个List集合,可以使用Java 8的Stream API,代码如下:
```
List<String> list = Stream.concat(map1.entrySet().stream(), map2.entrySet().stream())
.map(entry -> entry.getKey() + ":" + entry.getValue())
.collect(Collectors.toList());
```
上面的代码先使用Stream.concat()方法将两个Map的entrySet的Stream合并为一个Stream,然后使用map()方法将每个entry转换为一个字符串,再使用collect()方法将结果收集到一个List集合中。
需要注意的是,Map集合中的key和value需要根据实际情况进行转换为字符串的操作。