//测试数据写入
List<User2> lstUsersAll = new ArrayList<>();
User2 user2 = new User2("张三", 168.4, 20);
lstUsersAll.add(user2);
user2 = new User2("小明", 170d, 17);
lstUsersAll.add(user2);
user2 = new User2("小红", 162.2, 22);
lstUsersAll.add(user2);
//把list里满足某个条件的成员输出到新的list
//输出用户名等于张三的
List<User2> lstUsers = lstUsersAll.stream().filter(t -> "张三".equals(t.getName())).collect(Collectors.toList());
//以上代码,如果用普通的for循环实现,需要4行代码,lambda精简了75%代码行数
List<User2> lstUsers1 = new ArrayList<>();
for (User2 users : lstUsersAll) {
if ("张三".equals(users.getName())) {
lstUsers1.add(users);
}
}
//把list里满足某个条件的成员输出,且只输出一个(用于业务逻辑只有一个结果的情况,省去了获取list后还要get(0))
//输出用户名等于张三的
User2 users = lstUsersAll.stream().filter(t -> "张三".equals(t.getName())).findFirst().orElse(null);
//把list里满足某个条件的成员,只输出某个属性(变量)
//输出用户名等于张三的用户名
List<String> lstName = lstUsersAll.stream().filter(t -> "张三".equals(t.getName())).map(User2::getName).collect(Collectors.toList());
//统计name属性的所有唯一值,并只输出name属性到List
List<String> lstName2 = lstUsersAll.stream().map(User2::getName).distinct().collect(Collectors.toList());
//排序
//以下是对age排升序
List<User2> lstUsersSort = lstUsersAll.stream().sorted(Comparator.comparing(User2::getAge)).collect(Collectors.toList());
//以下是对age排倒序,加了reversed方法就是倒序
lstUsersSort = lstUsersAll.stream().sorted(Comparator.comparing(User2::getAge).reversed()).collect(Collectors.toList());
//多属性排序,从第二个排序属性开始使用thenComparing
lstUsersSort = lstUsersAll.stream().sorted(Comparator.comparing(User2::getAge).thenComparing(User2::getHeight)).collect(Collectors.toList());
//删除
//删除用户名等于张三的
lstUsersAll.removeIf(t -> "张三".equals(t.getName()));