1 集合操作和辅助类
数据分页
如何让一个在集合呈现一种分页的效果呢——需要对集合进行包装。在一些缓存数据和数据后端无法提供分页的基础上,可以采用基于列表的内存分页方式。
val sers = new collection.mutable.ListBuffer[User]
(0,1000) foreach{ i=>
users += new User(i)
}
val one=new PagedList(users,20);
while(page.hasNext){
val next = page.next()
//do something
}
数据转换和筛选
筛选集合中符合特定规则的对象,收集(Select)成一个新的集合,也是经常遇到的。例如查找性别为男性的用户。
val maleUsers=Collections.select(users, new Predicate(){
def apply(user User):Boolean= (user.getGender.getName=="男")
});
对象比较器
往往我们需要按照指定的属性进行排序,例如按照创建日期、用户名排序。可以使用以下语句进行排序。
val users=CollectUtils.newArrayList();
users.sortBy(new PropertyOrdering("username",true))
// sort by creator's username
users.sortBy(new PropertyComparator("creator.username",true))
//[User,Group] list
val userGroups:Seq[Array[Object]]=search()
userGroups.sortBy(new PropertyComparator("[0].username",true)