过滤Java 8 Streams中的Map

时间:2017-07-26 13:33:48

标签: java java-8 hashmap java-stream

我试图使用Streams API过滤HashMap中的条目,但是最后一次方法调用Collectors.toMap。所以,我不知道如何实现 toMap 方法

    public void filterStudents(Map<Integer, Student> studentsMap){
            HashMap<Integer, Student> filteredStudentsMap = studentsMap.entrySet().stream().
            filter(s -> s.getValue().getAddress().equalsIgnoreCase("delhi")).
            collect(Collectors.toMap(k , v));
    }

public class Student {

        private int id;

        private String firstName;

        private String lastName;

        private String address;
    ...

    }

任何建议?

1 个答案:

答案 0 :(得分:12)

只需从通过过滤器的条目的键和值中生成输出Map

public void filterStudents(Map<Integer, Student> studentsMap){
    Map<Integer, Student> filteredStudentsMap = 
        studentsMap.entrySet()
                   .stream()
                   .filter(s -> s.getValue().getAddress().equalsIgnoreCase("delhi"))
                   .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
}