举个例子,现有一个List集合,存放的学生信息user,如何根据学生的性别过滤,分类,将男学生和女学生分别存放在不同的集合中?
当然,去循环集合,根据对象的性别判断后分别存在新声明的集合是可以的,但未免显的有点low,代码也比较冗余,下面介绍个高效的方法:
用到commons-collections-3.2.jar
男:
userList1 = (List<User>) CollectionUtils.select(userList,
new Predicate() {
public boolean evaluate(Object arg0) {
User u = (User) arg0;
return "1".equals(u.getSex());
}
});
女:
userList2 = (List<User>) CollectionUtils.select(userList,
new Predicate() {
public boolean evaluate(Object arg0) {
User u = (User) arg0;
return "2".equals(u.getSex());
}
});
也可以获取集合对象中所有学生的名字:
List<String> userNameList = (List<String>) CollectionUtils.collect(
userList,newTransformer() {
publicObject transform(Object arg0) {
User u = (User) arg0;
return u.getUsername();
}
});