List<UserVo> users = Arrays.asList(
new UserVo("1", "user1", "男", 10, new Date(), "1"),
new UserVo("2", "user2", "女", 13, "2005-10-01", "2"),
new UserVo("3", "user3", "女", 16, "2003-07-01", "2"),
new UserVo("4", "user4", "男", 19, "2005-10-01", "3"),
new UserVo("5", "user5", "女", 14, "2003-10-01", "3"),
new UserVo("6", "user6", "女", 10, "2001-10-01", "4"),
new UserVo("7", "", "女", 10, "2001-10-01", "5"),
new UserVo("8", "user7", "男", 15, "2011-10-01", "4")
);
List<ClazzVo> clazzs = Lists.newArrayList(
new ClazzVo("1", "一班"),
new ClazzVo("2", "二班"),
new ClazzVo("3", "三班"),
new ClazzVo("4", "四班"),
new ClazzVo("5", "五班")
);
通过java.util.Collection.stream() 方法用集合创建流
map:接收一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素。
collect,收集,终端操作,就是把一个流收集起来,最终可以是收集成一个值也可以收集成一个新的集合。
collect主要依赖java.util.stream.Collectors类内置的静态方法。
/**
* 指定属性的集合
*
* @return
*/
public static List<String> getSpecifiedCollectionOfAttributes(List<UserVo> users) {
List<String> userIds = users.stream().map(UserVo::getId).collect(Collectors.toList());
return userIds;
}
结果:
12345678
distinct对流中的元素做去重操作
/**
* 指定属性去重后的集合
*
* @return
*/
public static List<String> getSpecifiedCollectionOfDistinctAttributes(List<UserVo> users) {
List<String> sexList = users.stream().map(UserVo::getSex).distinct().collect(Collectors.toList());
return sexList;
}
结果:
男 女
按照出生日期,班级排序
/**
* 排序后的集合
*
* @return
*/
public static List<UserVo> getSortedCollection(List<UserVo> users) {
List<UserVo> birthSortList = users.stream().sorted((x, y) -> {
if (x.getBirth().after(y.getBirth())