stream流操作,获取List集合中对象的单个字段,并以List集合返回
时间: 2023-08-19 10:03:57 浏览: 119
可以使用Java 8中的Stream API来实现这个功能。代码如下:
```java
List<YourObject> list = //...初始化List集合
List<String> fieldList = list.stream()
.map(YourObject::getField) //获取对象的单个字段
.collect(Collectors.toList()); //将单个字段组成List集合返回
```
其中,`YourObject`是你的对象类名,`getField()`是你要获取的单个字段的方法名。上述代码可以将List集合中的每个对象的单个字段取出来,然后组成一个List集合返回。
相关问题
list嵌套map stream 以单个字段去重
可以使用Java 8的Stream API来实现。假设有一个名为list的List,其中每个元素都是一个Map对象,可以按照如下方式进行嵌套的Map和List去重:
```
List<Map<String, Object>> resultList = list.stream()
.map(map -> map.get("fieldName"))
.distinct()
.map(fieldName -> list.stream()
.filter(map -> map.get("fieldName").equals(fieldName))
.findFirst()
.get())
.collect(Collectors.toList());
```
其中,fieldName表示要去重的字段名。首先,使用map操作获取所有map对象中的fieldName属性值,并通过distinct操作去重。然后,再次使用map操作,获取每个fieldName属性值对应的第一个map对象,即去除重复的map对象。最后,使用collect操作收集结果到一个新的List中。
java8新特性实现:list集合中由多条费用实体数据,每个实体数据都有一个单价字段,单价字段属性为bigdecimal。获取list中所有实体的单价字段,去重后,用/拼接成字符串
在Java 8中,你可以利用Stream API来处理这种需求。首先,假设你有一个`FeeEntity`类,它包含一个BigDecimal类型的`price`字段。以下是一个简单的步骤说明:
```java
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
class FeeEntity {
private BigDecimal price;
// getters and setters...
public BigDecimal getPrice() {
return price;
}
}
List<FeeEntity> feeEntities = ...; // 你的费实体列表
// 使用stream对list进行操作
String result = feeEntities.stream()
.map(FeeEntity::getPrice) // 获取每个实体的单价
.distinct() // 去重
.map(BigDecimal::toString) // 转换为字符串
.collect(Collectors.joining("/")); // 拼接为单个字符串
System.out.println(result);
```
在这个例子中,我们使用了`map()`函数两次:第一次将`FeeEntity`对象转换为`BigDecimal`的实例,第二次将`BigDecimal`转换为字符串。`distinct()`用于去除重复的值,最后`collect(Collectors.joining("/"))`将所有的价格字符串用`/`连接起来。
阅读全文