aru*_*net 8 java collections list comparator
我有User对象列表,我只想根据User对象中的变量从List中获取User对象.
public class User {
private int id;
private String sex;
private int age;
private String country;
/**
* Getter and setter for all variables
*/
}
Run Code Online (Sandbox Code Playgroud)
我有这样的模型类.现在我有User对象列表.
List<User> users = new ArrayList<User>();
Run Code Online (Sandbox Code Playgroud)
如果用户是男性,我想从用户列表中获取对象.
List<User> ageList = new ArrayList<User>();
for(User object : users) {
if(object.getSex().equals("Male")){
ageList.add(object);
}
}
Run Code Online (Sandbox Code Playgroud)
我不喜欢上面的方法.有没有更好的方法从对象列表中获取基于对象变量的对象..?
Java Collections有什么功能吗?我们可以使用Java Comparator来解决这个问题吗?
如果你正在使用番石榴,你可以使用Collections2.filter:
Collection<User> males = Collections2.filter(users, new Predicate<User>() {
@Override
public boolean apply(User user) {
return user.getSex().equals("Male");
}
});
Run Code Online (Sandbox Code Playgroud)
使用Java 8,您可以做得更好:
Collection<User> males = Collections2.filter(users, user -> user.getSex().equals("Male"));
Run Code Online (Sandbox Code Playgroud)