List<DevPortReportEsDTO> eSResponseList 取这个list中某个字段的值组装成Set,不重复
时间: 2024-02-21 09:57:08 浏览: 13
可以使用以下代码将列表中某个字段的值取出来组装成 Set,并且去重:
```
Set<Object> set = eSResponseList.stream()
.map(DevPortReportEsDTO::getFieldName) // 将列表中的某个字段取出来
.collect(Collectors.toSet()); // 将结果组装成 Set 并去重
```
其中,`getFieldName` 需要替换成你要取出的字段的名称。这样就可以得到一个 Set,其中包含了列表中某个字段的所有不重复的值。
相关问题
List<A>和List<B>中部分字段相同,如何用java8将List<A>的值放到List<B>中
您可以使用Java 8中的stream()和map()方法。具体步骤如下:
1. 创建一个函数将List<A>中的值映射到List<B>中的值。例如:
```
Function<A, B> mappingFunction = a -> {
B b = new B();
b.setField1(a.getField1());
b.setField2(a.getField2());
// 将其他相同字段复制到B中
return b;
};
```
2. 将List<A>转化为Stream<A>。
```
List<A> listA = new ArrayList<>();
// add A objects to listA
Stream<A> streamA = listA.stream();
```
3. 使用map()方法将List<A>中的值映射到List<B>中的值。
```
List<B> listB = streamA.map(mappingFunction).collect(Collectors.toList());
```
4. 现在,List<B>中包含了List<A>中的所有相同字段。
List<A>和List<B>字段相同,但是有两个字段名不同,如何用java8将List<A>转换成List<B>
抱歉,我能回答这个问题。您可以使用Java 8中的Stream API和lambda表达式来转换List<A>到List<B>。首先,您需要创建一个函数来将A对象转换为B对象,然后使用map()函数将List<A>映射到List<B>。以下是一个简单的示例代码:
List<A> listA = new ArrayList<>();
// 添加A对象到列表中
List<B> listB = listA.stream().map(a -> {
B b = new B();
b.setField1(a.getField1()); // 假设A和B都有字段1
b.setField2(a.getField3()); // 假设A有字段3,B有字段2
return b;
}).collect(Collectors.toList());
// 现在,listB将包含已经转换为B类型的A对象