lamda 根据list<object> 取对象某个字段生成新的list 去重
时间: 2024-10-09 13:08:57 浏览: 16
Lambda表达式在Java中可以用来简洁地处理集合操作,包括取对象的某个字段、过滤、映射以及去重。如果你想根据`List<Object>`中每个对象的某个字段生成一个新的列表并去除重复,你可以这样做:
```java
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
List<Object> originalList = Arrays.asList(<示例对象数组>);
List<String> fieldValues = originalList.stream() // 转换为流
.map(obj -> obj.getFieldName()) // 获取每个对象的特定字段值
.distinct() // 去除重复的值
.collect(Collectors.toList()); // 收集到新列表
// 示例中的 `getFieldName()` 应替换为实际访问字段名的方法,如 `obj.getPropertyName()` 或者 `obj.field`
```
这里假设`obj.getFieldName()`能得到你需要去重的字段值。`distinct()`方法用于删除序列中的重复元素,而`Collectors.toList()`用于收集流的结果转换为列表。
相关问题
用java lamda方式 list<string>转list<float>
假设你有一个 `List<String>` 类型的列表 `stringList`,你可以使用 Java 8 中的 Lambda 表达式和 Stream API 将其转换为 `List<Float>` 类型的列表 `floatList`,代码如下:
```java
List<String> stringList = Arrays.asList("1.2", "3.4", "5.6");
List<Float> floatList = stringList.stream()
.map(Float::parseFloat)
.collect(Collectors.toList());
```
上面的代码首先将 `stringList` 转换为一个 Stream,然后使用 `map()` 方法将每个字符串转换为相应的浮点数,最后使用 `collect()` 方法将结果转换为一个 `List<Float>` 类型的列表 `floatList`。在 `map()` 方法中,我们使用 `Float::parseFloat` 方法引用来将字符串转换为浮点数。
用java lamda方式 list<string>转list<float> 并保留五位小数
假设原始的List<String>为stringList,可以使用Java 8的Lambda表达式和Stream API来实现该功能,代码如下:
```
List<Float> floatList = stringList.stream()
.map(Float::parseFloat)
.map(f -> (float)(Math.round(f * 100000) / 100000.0))
.collect(Collectors.toList());
```
上述代码中,首先使用stream()方法将stringList转换为Stream<String>类型,然后使用map()方法将每个String元素转换为对应的Float类型。接着使用第二个map()方法将每个Float类型的元素保留五位小数,最后使用collect()方法将结果收集到List<Float>类型的floatList中。
其中,第二个map()方法使用了Lambda表达式和Math.round()方法来实现保留五位小数的功能。具体来说,将每个Float类型元素乘以100000,将结果四舍五入取整,再除以100000.0,即可得到保留五位小数的结果。