Java8新特性的基本应用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhou6282610/article/details/88656439

removeIf用来移除某些条件的元素

List<User> userList = new ArrayList<>();
userList.add(new User("张三", "110"));
userList.add(new User("李四", "120"));
userList.add(new User("王五", "123"));
List<String> phoneList = Arrays.asList("110", "120");
userList.removeIf(u -> phoneList.contains(u.getPhone()));

应用场景:假设有三个用户,而你有一份手机号名单,这些手机号的用户是非法的,你要进行移除,那么removeIf可以做条件判断移除。

map重新规整集合

userList.stream().map(u -> u.getName()).collect(Collectors.toList());

应用场景:假设上面筛选出的userList之后,你要将里面非常多的用户信息筛选出这些合法用户的名字作为一个名单。

toMap重新将数据转换成map封装

List<User> userList = new ArrayList<>();
userList.add(new User(1L, "张三", "110", "百度"));
userList.add(new User(2L, "李四", "120", "京东"));
userList.add(new User(3L, "王五", "123", "腾讯"));
userList.stream().collect(Collectors.toMap(User::getId, User::getCompany));

应用场景:假设此时用户拥有更多的信息,而你只需要根据Id获取到对应的公司,而实际意义上,你并不想根据公司去一条条SQL查询出对应的信息,那么可以将所有的User信息拿出来,封装到一个map里面进行key值获取,前提是你的数据量不是非常的庞大。XD

toSet将筛选出的数据进行去重(无序)

userList.stream().map(u -> u.getPhone()).collect(Collectors.toSet());

应用场景:同样的,如果你需要将筛选出来的手机号进行去重,可以将他放到set集合里面去。

toList将筛选出数据的Id列表(可重复)

userList.stream().map(u -> u.getId()).collect(Collectors.toList());

toCollection将当前集合数据转入一个新的集合中存储

userList.stream().map(u -> u.getId()).collect(Collectors.toCollection(ArrayList::new));

partitioningBy分类成一个key为True和Flase的Map

userList.stream().collect(Collectors.partitioningBy(u -> u.getId() > 50L));

应用场景:比如你要筛选出一个集合,既要包含符合条件的内容,也要包含不符合条件的内容;这样你就可以根据key的false和true来判断哪些内容是符合条件的。

groupingBy对特定条件进行分组

List<String> nameList = Arrays.asList("王大锤", "赵云", "王二");
nameList.stream().collect(Collectors.groupingBy(String::length));

应用场景:比如你想要将一批用户的名字按照长度进行分组。

filter从流中抽取出符合条件的数据

userList.stream().filter(u -> u.getName().length() == 3).collect(Collectors.toList());

应用场景:筛选出用户名字长度为3的数据。

猜你喜欢

转载自blog.csdn.net/zhou6282610/article/details/88656439
今日推荐