如何用list.stream收集list元素中的某个属性形成新的list
时间: 2023-08-06 13:09:00 浏览: 146
可以使用Java 8中的Stream API和Collectors工具类来完成这个任务。假设我们有一个元素类型为T的List<T>,其中T包含属性prop,我们要从这个list中选取所有元素的prop属性,并将它们组成一个新的List。下面是一种实现方式:
```java
List<T> list = ... // 原始list
List<PropType> props = list.stream()
.map(T::getProp)
.collect(Collectors.toList());
```
这里使用了map操作,将每个元素的prop属性映射为一个新的对象,然后使用toList()方法将这些新对象组成一个新的List。其中T::getProp是一个方法引用,表示获取T对象的prop属性。你需要将PropType替换成prop属性的类型。
相关问题
list.stream去掉某个元素
你可以使用 `filter` 方法来移除列表中的特定元素。以下是使用 `filter` 方法移除某个元素的示例代码:
```java
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int elementToRemove = 3;
List<Integer> result = numbers.stream()
.filter(number -> number != elementToRemove)
.collect(Collectors.toList());
System.out.println(result); // [1, 2, 4, 5]
```
在这个例子中,我们创建了一个整数列表 `numbers`,然后使用 `stream()` 方法将其转换为流。接着使用 `filter` 方法,传入一个 lambda 表达式作为参数,该表达式用于判断元素是否与要移除的元素相等。最后,我们使用 `collect` 方法将过滤后的元素收集到一个新的列表中,并打印输出结果。
这样就可以通过 `filter` 方法从 `list.stream()` 中移除特定的元素。
List.stream().map()将对象某个值改变
List.stream().map() 是 Java 中 Stream API 的一种操作,它通常用于对集合中的每个元素应用一个函数,然后返回一个新的 Stream 对象,其中包含处理后的结果。在这个操作中,假设我们有一个 List<T> 类型的对象,T 是可以调用 map() 方法的对象,例如 List<String> 或者 List<Integer>。
当你调用 `list.stream().map(func)` 时,`func` 是一个 Function 接口的实现,它接收一个 T 类型的元素作为输入并返回另一个类型的对象。这个函数会作用于 list 中的每一个元素,比如,如果你想将所有字符串转换为大写,你可以这样做:
```java
List<String> list = Arrays.asList("hello", "world");
List<String> upperCaseList = list.stream()
.map(String::toUpperCase)
.collect(Collectors.toList());
```
这里 `.map(String::toUpperCase)` 就是一个例子,`String::toUpperCase` 是一个 Lambda 表达式,它代表了将字符串转换为大写的操作。map() 方法会返回一个 Stream,最后通过 `collect()` 方法将其转换回列表形式。
阅读全文