Java8中Stream操作集合

在不了解Stream之前,如果我们有一个对象集合,需要获取数据或输入数据的话就需要循环,依次取数据或输入数据。

Java8提供了集合的Stream流操作,如果您需要,下面的内容可以供您参考

// 获取对象集合中某字段的数字和(不会出现空指针)
int = 集合对象.stream().mapToInt(集合的对象类名::某字段的get方法).sum()

// 向对象集合中所有对象放入同一字段值(不会出现空指针)
集合对象.forEach(函数对象(任意值) -> 函数对象.某字段的set方法(输入的值));

// 获取对象集合中某些字段形成新的集合
List = 集合对象.stream().map(函数对象(任意值) -> new 集合的对象类名(函数对象.getUserName(),函数对象.getAge())).collect(Collectors.toList());

// 查询对象集合中指定范围的对象形成新的集合(会出现空指针)
List = 集合对象.stream().filter(函数对象(任意值) -> 条件).collect(Collectors.toList());

// 查询对象集合中的某字段形成新的集合
List = 集合对象.stream().map(集合的对象类名::某字段的get方法).collect(Collectors.toList());

// 将list<Map>类型集合按map中的元素进行去重
Set<> set = 集合对象.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(()->new TreeSet<>(Comparator.comparing(o->o.get(xxx)))), ArrayList::new));

// 求最高值
Optional<Integer> 新的集合对象 = 集合对象.stream().map(集合的对象类名::对象的get方法).collect(Collectors.maxBy(Integer::compare));

// 将List集合转换为Map集合
// 注意key是唯一的,要注意他不会自动去掉重复key,而是抛出异常,我们需要手动处理
Map<String, String> 新的集合对象 = List集合对象.stream().collect(Collectors.toMap(List集合对象类名::对象的属性get方法(作为key), List集合对象类名::对象的属性get方法(作为value), (如果需要去重则添加(k1, k2) -> k2 表示后添加的key是否替换之前的key)))

// 按照某字段不同分组
Map<String, List<集合的对象类名>> 新的集合对象 = 集合对象.stream().collect(Collectors.groupingBy(集合的对象类名::对象的get方法));

// 按照一定条件分组
Map<Boolean, List<集合的对象类名>> 新的集合对象 = 集合对象.stream().collect(Collectors.partitioningBy(函数对象(任意值) -> 判断条件));

// 将集合内容串联成一个字符串
String string = 集合对象.stream().collect(Collectors.joining("串联的中间字符"));

// 按某字段自然排序(正序)
List<String> newList = 集合对象.stream().sorted(Comparator.comparing(集合的对象类名::被比较的对象的get方法)).map(集合的对象类名::转换导出字段的get方法).collect(Collectors.toList());

// 给Integer集合进行自然排序(正序)
List<Integer> newList2 = 集合对象.stream().sorted(Comparator.comparing(Integer::intValue)).collect(Collectors.toList())

// 按某字段倒叙
List<String> newList3 = 集合对象.stream().sorted(Comparator.comparing(集合的对象类名::被比较的对象的get方法).reversed()).map(集合的对象类名::转换导出字段的get方法).collect(Collectors.toList());

// 先按工资再按年龄升序排序
List<String> newList4 = 集合对象.stream().sorted(Comparator.comparing(集合的对象类名::被比较的对象的get方法1).thenComparing(集合的对象类名::被比较的对象的get方法2)).map(集合的对象类名::转换导出字段的get方法).collect(Collectors.toList());

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值