java 8

并行流parallel

stream是顺序流,由主线程按顺序对流执行操作,而parallelStream是并行流,内部以多线程并行执行的方式对流进行操作,但前提是流中的数据处理没有顺序要求。例如筛选集合中的奇数
如果流中的数据量足够大,并行流可以加快处速度
在这里插入图片描述

list.stream().parallel()
 Person p = new Person();
        List<Person> list1 = new ArrayList<>();
        list1.add(new Person().setName("a").setId(1));
        list1.add(new Person().setName("b").setId(2));
        list1.add(new Person().setName("b").setId(1));

排序

>list1.sort(Comparator.comparing(Person::getId).reversed().thenComparing(Person::getName));
//根据 id **由大到小**排序后再根据姓名排序

>Collections.sort(list1,Comparator.comparing(Person::getId));
//根据id排序,由小到大

>   list1.sort((x1,x2)-> x2.getId().compareTo(x1.getId()));
根据id排序,由大到小 如果是反过来则,由小到大,相等即不替换位置

> List<Person> list2 = list1.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(()->new TreeSet<>(Comparator.comparing(Person::getName))),ArrayList::new));
//根据Person的名字进行去重
           
>List<Person> list3 = list1.stream().sorted((a1,a2)->a2.getId().compareTo(a1.getId())).sorted((a1,a2)->a2.getName().compareTo(a1.getName())).collect(Collectors.toList());
先根据id排序再根据名字排序

>List<Integer> list3 = Arrays.asList(new Integer[]{1,5,3,2});
list3.sort((a1, a2) -> 0);  //表示不替换位置

>// list3.sort((a1, a2) -> a1.compareTo(a2));  //表示从小到大排列,如果是对象可以,p1.getAge()>p2.getAge()进行排列
//Collections.sort();

>  int[] intArray = {1,5,3};
     Arrays.sort(intArray);

根据id进行分组

Map<Integer,List> map = list1.stream().collect(Collectors.groupingBy(Person::getId) );
//根据id进行分组

相同数据只要某一属性最大条

1.排序 2.去重
原理:他会选择相同数据的第一条
List list1=users.stream().sorted(Comparator.comparing(User::getAge).reversed()).collect(Collectors.toList());

ArrayList collect = list1.stream().collect(Collectors.collectingAndThen(
Collectors.toCollection( () -> new TreeSet<>(Comparator.comparing(User::getId))), ArrayList::new));

获得一组数据某一属性的最大值数据

User user = users.stream().max(Comparator.comparing(User::getId).reversed()).get();

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值