java list.steam() 等于某个值的对象 统一修改 最精简写法
时间: 2023-08-21 21:04:29 浏览: 62
可以使用 Java 8 的 Stream API 来实现:
```
list.stream()
.filter(obj -> obj.equals(value))
.forEach(obj -> obj.modify());
```
其中,`list` 为要修改的 List 对象,`value` 为要修改的值,`modify()` 为修改操作的方法。这段代码会遍历 `list`,筛选出等于 `value` 的对象,并对它们执行 `modify()` 方法。
相关问题
java 判断list集合中对象的某个字段等于特定值
可以使用 Java 8 的流式操作和 Lambda 表达式来实现。具体代码如下:
```java
List<MyObject> list = ...; // 假设这是一个包含 MyObject 对象的 List
String targetValue = "target"; // 假设需要判断的字段值为 "target"
boolean containsTarget = list.stream()
.anyMatch(obj -> targetValue.equals(obj.getField())); // 使用 Lambda 表达式进行判断
if (containsTarget) {
// 如果包含目标值,则执行相应的操作
} else {
// 如果不包含目标值,则执行相应的操作
}
```
其中,`MyObject` 是一个自定义的对象,`getField()` 是 `MyObject` 中的一个方法,返回该对象的某个字段的值。在 Lambda 表达式中,使用 `anyMatch()` 方法判断 list 中是否存在一个对象的某个字段等于目标值。如果存在,则返回 `true`,否则返回 `false`。
java list stream 获取对象某个值
如果你想从一个对象列表中获取某个属性值,可以使用Java 8中的Stream API来实现。假设你有一个Person类的列表,你想获取所有人的姓名,可以这样做:
```
List<Person> persons = ... // 假设这里有一个Person对象列表
List<String> names = persons.stream()
.map(Person::getName) // 将每个Person对象映射到其姓名属性
.collect(Collectors.toList()); // 将所有姓名收集到一个列表中
```
在这个例子中,我们使用了Stream的map()方法将每个Person对象映射到其姓名属性,然后使用collect()方法将所有姓名收集到一个列表中。这里的Person::getName是一个方法引用,它等价于使用lambda表达式 person -> person.getName()。
如果你只想获取符合某个条件的对象的某个属性值,可以在map()方法之前使用filter()方法来过滤列表中的对象。例如,假设你只想获取年龄大于18岁的人的姓名,可以这样做:
```
List<String> names = persons.stream()
.filter(person -> person.getAge() > 18) // 过滤年龄大于18岁的人
.map(Person::getName) // 将每个Person对象映射到其姓名属性
.collect(Collectors.toList()); // 将所有姓名收集到一个列表中
```
在这个例子中,我们使用了filter()方法来过滤年龄大于18岁的人,然后使用map()方法将每个符合条件的Person对象映射到其姓名属性。最后,我们使用collect()方法将所有姓名收集到一个列表中。