注意: 简单的我就不写了,在这里主要是学习一下,我平常需要用的,但是我又不会用(尴尬)。像什么map、filter这种我就不写了,没啥意思了
我现在知道经常用到的就这些了,以后会更新的
1、排序问题(在工作中,老是有一些需求,需要在代码中进行排序) 上代码: 初始化数据:
static List<User> list = null;
static {
User user1 = User.builder().uid(StrUtil.uuid()).name("张三").address("北京").gender(0).age(10).build();
User user2= User.builder().uid(StrUtil.uuid()).name("李四").address("上海").gender(1).age(18).build();
User user3 = User.builder().uid(StrUtil.uuid()).name("王五").address("青岛").gender(0)**.**age(8).build();
User user4 = User.builder().uid(StrUtil.uuid()).name("赵六").address("西安").gender(1).age(14).build();
User user5 = User.builder().uid(StrUtil.uuid()).name("田七").address("南宁").gender(1).age(16).build();
User user6 = User.builder().uid(StrUtil.uuid()).name("王八").address("桂林").gender(0).age(20).build();
list = Lists.newArrayList(user1,user2,user3,user4,user5,user6);
}
sort方法使用
//sorted 排序,中参数Comparator 专门用来排序的,
// Comparator的comparing方法中放需要排序的参数,默认是升序,加reversed方法是倒序
List<User> collect = list.stream().sorted(Comparator.comparing(User::getAge).reversed()).collect(Collectors.toList());
2、取最大值、最小值(max和min)
//和sorted方法类似
User user = list.stream().min(Comparator.comparing(User::getAge)).orElse(null);
3、concat将多个流合并成一个流(工作总可以将多个集合的数据合并成一个集合) 注意:空集合也不会报错
List<User> result = Stream.concat(list.stream(),list1.stream()).sorted(Comparator.comparing(User::getAge)).collect(Collectors.toList());
4、distinct去重,会将属性一样的数据去重
result = result.stream().distinct().collect(Collectors.toList());
5、flatMap其实就是将多个流合并成一个流,适合集合中套集合那种操作
List<Dept> result = Lists.newArrayList();
result.add(new Dept());
result = result.stream().map(item ->{
Dept dept = Dept.builder().uid(StrUtil.uuid()).userList(list).build();
return dept;
}).collect(Collectors.toList());
List<User> list = result.stream().flatMap(item -> item.getUserList().stream().filter(user -> StrUtil.equals("张三", user.getName()))).collect(Collectors.toList());
6、anyMatch方法,其实就是集合的判断存不存在方法,个人感觉适合,引用类型的集合
boolean match = list.stream().anyMatch(item -> StrUtil.equals("李四", item.getName()));
7、list转map
Map<String, User> userMap = list.stream().collect(Collectors.toMap(User::getUid, user -> user));
8、list按某个属性分组
Map<Integer, List<User>> userMap = list.stream().collect(Collectors.groupingBy(User::getAge));