在Java 8中,能够应用Stream API将Map中的对象元素遍历进去并依据条件过滤,而后将符合条件的元素放入List中。上面是一种常见的形式:

假如有一个Map,其中蕴含Person对象作为值,每个Person对象有惟一的ID和对应的姓名。咱们想要遍历这个Map,并过滤出ID大于等于2的Person对象,而后将这些Person对象放入一个List中。

首先,确保Person类具备getId()和getName()办法,用于获取ID和姓名。

而后,应用Map的entrySet()办法获取Map中的所有键值对(Entry对象),再应用Stream API进行遍历和过滤操作。

以下是示例代码:

javaimport java.util.*;import java.util.stream.Collectors;class Person {    private int id;    private String name;    public Person(int id, String name) {        this.id = id;        this.name = name;    }    public int getId() {        return id;    }    public String getName() {        return name;    }}
public class Main {    public static void main(String[] args) {        Map<Integer, Person> personMap = new HashMap<>();        personMap.put(1, new Person(1, "John"));        personMap.put(2, new Person(2, "Alice"));        personMap.put(3, new Person(3, "Bob"));        personMap.put(4, new Person(4, "David"));        List<Person> filteredList = personMap.entrySet().stream()                .filter(entry -> entry.getKey() >= 2)                .map(Map.Entry::getValue)                .collect(Collectors.toList());        System.out.println(filteredList);    }}

运行以上代码,输入后果为:

[{id=2, name=Alice}, {id=3, name=Bob}, {id=4, name=David}]

在这个示例中,咱们首先应用Map的entrySet()办法获取蕴含键值对的Set汇合。而后,通过Stream API进行解决:

  1. 应用filter()办法过滤出键(ID)大于等于2的Entry对象;
  2. 应用map()办法将符合条件的Entry对象转换为对应的Person对象;
  3. 最初,应用collect()办法将过滤后的Person对象收集到List中。

留神,示例中的{id=2, name=Alice}示意一个Person对象,因为应用了默认的toString()办法,所以输入的格局与一般的Person类不同。

你能够依据具体的需要批改代码,替换Person类的属性和判断条件,以及要放入List中的对象类型。