list stream查找对象的某个属性值是否存在
时间: 2023-07-25 15:06:41 浏览: 110
你可以使用 `anyMatch()` 方法来判断某个属性值是否存在于一个对象列表中。例如,假设你有一个 `List` 对象,对象中包含一个名为 `name` 的属性,你可以使用以下代码来检查列表中是否存在 `name` 属性为 "John" 的对象:
```
List<Person> people = ... // 假设这是一个Person对象的列表
boolean exists = people.stream().anyMatch(person -> person.getName().equals("John"));
```
如果列表中至少有一个对象的 `name` 属性等于 "John",则 `exists` 变量将为 `true`,否则为 `false`。
相关问题
获取List中某个属性的所有值,判断是否存在某个值
好的,您可以使用 Java 8 的 Stream API 来实现这个功能。假设您有一个包含对象的 List,每个对象都有一个属性,您想要获取该属性的所有值并判断是否存在某个特定的值,可以按照以下方式操作:
假设您的对象类名为 ObjectClass,属性名为 property,要查找的值为 targetValue:
```java
List<ObjectClass> originalList = ...; // 原始的 List
boolean exists = originalList.stream()
.map(ObjectClass::getProperty) // 获取每个对象的 property 属性值
.anyMatch(targetValue::equals); // 判断是否存在 targetValue
if (exists) {
// 存在 targetValue 的处理逻辑
} else {
// 不存在 targetValue 的处理逻辑
}
```
这里使用了 `map` 方法来将每个对象转换为其属性值,然后使用 `anyMatch` 方法来检查是否存在与 `targetValue` 相等的值。如果存在,`exists` 变量将设置为 `true`,否则将设置为 `false`。
请将 `PropertyType` 替换为您实际的属性类型,将 `targetValue` 替换为您要查找的值。
java中如何判断list中对象的某个属性等于指定的值
可以使用Java 8的流式编程来实现,具体代码如下:
```java
List<MyObject> list = new ArrayList<>();
// 假设MyObject类有属性name
String targetName = "test";
boolean containsTargetName = list.stream().anyMatch(obj -> targetName.equals(obj.getName()));
// 如果存在对象的name属性等于targetName,containsTargetName为true,否则为false
```
在上面的代码中,使用了`stream()`方法将List转换成流,然后使用`anyMatch()`方法查找是否存在满足条件的元素。`anyMatch()`方法接受一个Lambda表达式作为参数,该Lambda表达式定义了判断条件,这里使用了`equals()`方法来比较字符串是否相等。如果存在满足条件的元素,`anyMatch()`方法返回true,否则返回false。
阅读全文