有一个存放对象的列表list我希望从对象列表中获取名称为name的元素全部返回为一个list
时间: 2024-02-17 19:05:13 浏览: 28
可以使用 Java 8 的 Stream API 进行操作,具体代码如下:
```java
List<Person> personList = Arrays.asList(
new Person("Alice"), new Person("Bob"), new Person("Charlie"), new Person("David"), new Person("Bob")
);
String targetName = "Bob";
List<Person> result = personList.stream()
.filter(person -> person.getName().equals(targetName))
.collect(Collectors.toList());
System.out.println(result);
```
以上代码中,我们首先定义了一个存放对象的列表 `personList`,其中每个对象都有一个属性 `name`。我们希望从列表中获取 `name` 属性等于 `"Bob"` 的所有元素,并将它们组成一个新的列表返回。
接着,我们使用 `stream()` 方法将列表转换为一个流。然后,我们使用 `filter()` 方法过滤出其中 `name` 属性等于 `"Bob"` 的对象。最后,我们使用 `collect()` 方法将过滤结果收集到一个列表中,最终返回包含两个元素的列表。
需要注意的是,上述代码中使用了 Lambda 表达式 `person -> person.getName().equals(targetName)`,它的含义是“如果对象 `person` 的 `name` 属性值等于 `targetName`,则返回 true”。`filter()` 方法会使用该 Lambda 表达式筛选出符合条件的对象。
如果你需要将结果转换成其他类型的集合,可以使用相应的 `Collectors.toXXX()` 方法进行转换,例如 `Collectors.toSet()` 将结果转换为一个 `Set` 集合。