Sri*_*man 5 java foreach lambda stream java-8
我是Java8的新手.我需要根据某些标准(来自另一个列表)在一个列表中减去/删除POJO并在UI上显示它.
迭代一个列表并搜索条件删除对象将原始列表发送到UI
Children.java
private String firstName;
private String lastName;
private String school;
private String personId;
// Setters and getters.
Person.java
private String personId;
private String fullName;
private String address;
// Setters and Getters.
Run Code Online (Sandbox Code Playgroud)
..主要代码..
// populated by other methods.
List<Person> personList;
//Connect to DB and get ChildrenList
List<Children> childrenList = criteria.list();
for(Children child : childrenList) {
personList.removeIf(person -> child.getPersonId().equals(person.getPersonId()));
}
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来处理循环?任何帮助表示赞赏.
你现在所拥有的代码工作完美,但也O(n * m)因为removeIf通过迭代List的每一个Children.改进的一种方法是将每个孩子存放personId在a中Set<String>,并将其中的每个移除Person,List<Person>如果它们personId包含在Set:
Set<String> childIds = childrenList.stream()
.map(Children::getPersonId)
.collect(Collectors.toSet());
personList.removeIf(person -> childIds.contains(person.getPersonId()));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1945 次 |
| 最近记录: |