java中如何通过对象的一个属性在集合中查询对象
时间: 2024-05-11 07:18:46 浏览: 11
你可以使用 Java 8 中的 Stream API 来查询集合中的对象。假设你有一个包含对象的 List,每个对象都有一个属性叫做 name,你可以使用以下代码来查询符合条件的对象:
```java
List<MyObject> list = ... // 假设你有一个 MyObject 类型的 List
String nameToSearch = "John";
List<MyObject> result = list.stream()
.filter(obj -> nameToSearch.equals(obj.getName()))
.collect(Collectors.toList());
```
上述代码使用了 Stream 的 filter 方法,它会对集合中的每个对象进行判断,如果满足条件则保留该对象,否则过滤掉。在这个例子中,我们使用了 lambda 表达式来定义过滤条件,即如果对象的 name 属性等于 nameToSearch 变量的值,则保留该对象。最后使用 collect 方法将符合条件的对象收集到一个新的 List 中。
相关问题
java中使用stream往集合对象添加多个属性值
可以使用Java 8中的Stream API和lambda表达式来添加集合对象的多个属性值。假设我们有一个Person类,有name、age和gender三个属性,我们可以使用以下代码将多个Person对象添加到List集合中:
```
List<Person> people = new ArrayList<>();
people.add(new Person("Alice", 25, "female"));
people.add(new Person("Bob", 30, "male"));
people.add(new Person("Charlie", 20, "male"));
```
如果我们想要添加每个人的ID属性,可以使用Stream API的map方法,将每个Person对象映射为一个新的Person对象,并在其中添加ID属性。例如,我们可以使用以下代码:
```
List<Person> peopleWithIds = people.stream()
.map(person -> {
person.setId(UUID.randomUUID().toString());
return person;
})
.collect(Collectors.toList());
```
在上面的代码中,我们使用UUID生成一个唯一的ID字符串,并将其设置为每个Person对象的ID属性。然后,我们使用collect方法将Stream转换为List集合,以便我们可以访问所有添加了ID属性的Person对象。
类似地,我们可以使用Stream API和lambda表达式来添加其他属性值,例如日期、地址等等。只需在map方法中创建一个新的Person对象,并设置所需的属性即可。
java中使用stream根据对象属性过滤对象集合
可以使用Java 8中引入的Stream API来根据对象属性过滤对象集合。下面是一个示例:
假设有一个Person类,其中有name和age两个属性:
```
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
```
现在有一个List<Person>对象,我们要根据age属性过滤出年龄大于等于18的Person对象,可以使用如下的代码:
```
List<Person> people = Arrays.asList(
new Person("Alice", 20),
new Person("Bob", 17),
new Person("Charlie", 25),
new Person("David", 10)
);
List<Person> filteredPeople = people.stream()
.filter(p -> p.getAge() >= 18)
.collect(Collectors.toList());
System.out.println(filteredPeople);
```
输出结果为:
```
[Person{name='Alice', age=20}, Person{name='Charlie', age=25}]
```
在上面的代码中,我们使用了Stream的filter方法来过滤出年龄大于等于18的Person对象,然后使用collect方法将过滤后的结果收集到一个List中。