【发布时间】:2015-12-25 19:11:11
【问题描述】:
我有一个具有年龄属性的用户。 在我的方法中,我有 List。如何将其拆分为多个列表以供其他用户使用,例如:
List<User> lt6Users = new ArrayList<User>();
List<User> gt6Users = new ArrayList<User>();
for(User user:users){
if(user.getAge()<6){
lt6Users.add(user);
}
if(user.getAge()>6){
gt6Users.add(user);
}
// more condition
}
我只知道 lambda 表达式的两种方式:
lt6Users = users.stream().filter(user->user.getAge()<6).collect(Collectors.toList());
gt6Users = users.stream().filter(user->user.getAge()>6).collect(Collectors.toList());
上面的代码性能很差,因为它会循环遍历列表很多次
users.stream().foreach(user->{
if(user.getAge()<6){
lt6Users.add(user);
}
if(user.getAge()>6{
gt6Users.add(user);
}
});
上面的代码看起来就像没有 lambda 表达式的起始代码的代码。是否有另一种方法可以使用过滤器和谓词等 lambda 表达式功能编写代码?
【问题讨论】:
标签: filter lambda java-8 java-stream predicate