//测试数据写入 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()));