湛江网站制作推荐,加强政务公开网站建设,成品网站怎么新建网页,沧州01.收集(collect) collect#xff0c;收集#xff0c;可以说是内容最繁多、功能最丰富的部分了。 从字面上去理解#xff0c;就是把一个流收集起来#xff0c;最终可以是收集成一个值也可以收集成一个新的集合。 collect主要依赖java.util.stream.Collectors类内置的静态方…01.收集(collect) collect收集可以说是内容最繁多、功能最丰富的部分了。 从字面上去理解就是把一个流收集起来最终可以是收集成一个值也可以收集成一个新的集合。 collect主要依赖java.util.stream.Collectors类内置的静态方法。
这个是stream中的collect方法 R, A R collect(Collector? super T, A, R collector);02.归集(toList/toSet/toMap) 因为流不存储数据那么在流中的数据完成处理后需要将流中的数据重新归集到新的集合里。 toList、toSet和toMap比较常用另外还有toCollection、toConcurrentMap等复杂一些的用法。
ListInteger list Arrays.asList(1, 6, 3, 4, 6, 7, 9, 6, 20);ListInteger listNew list.stream().filter(x - x % 2 0).collect(Collectors.toList());System.out.println(产生的新集合是 listNew);SetInteger set list.stream().filter(x - x % 2 0).collect(Collectors.toSet());System.out.println(产生的不重复的新集合是 set);ListPerson personList new ArrayList();personList.add(new Person(Tom, 8900, 22, male, New Yark));personList.add(new Person(Jack, 7000, 29, male, Washington));personList.add(new Person(Lily, 7800, 24, female, Washington));personList.add(new Person(Anni, 8200, 28, female, New Yark));personList.add(new Person(Owen, 9500, 26, male, New Yark));personList.add(new Person(Alisa, 7900, 27, female, New Yark));Map?, Person personMap personList.stream().filter(p - p.getSalary() 8000).collect(Collectors.toMap(Person::getName,p - p));System.out.println(产生的新的map集合是 personMap);
3.统计(count/averaging) Collectors提供了一系列用于数据统计的静态方法
计数count
平均值averagingInt、averagingLong、averagingDouble
最值maxBy、minBy
求和summingInt、summingLong、summingDouble
统计以上所有summarizingInt、summarizingLong、summarizingDouble /*** 案例统计员工人数、平均工资、工资总额、最高工资。*/// 求总数Long count personList.stream().collect(Collectors.counting());System.out.println(员工总数 count);// 求平均工资Double avgSalary personList.stream().collect(Collectors.averagingDouble(Person::getSalary));System.out.println(员工平均工资 avgSalary);// 求工资之和Integer sumSalary personList.stream().collect(Collectors.summingInt(Person::getSalary));System.out.println(员工工资总和: sumSalary);// 一次性统计所有信息DoubleSummaryStatistics collect personList.stream().collect(Collectors.summarizingDouble(Person::getSalary));System.out.println(员工工资所有统计 collect);
分组(partitioningBy/groupingBy)
分区将stream按条件分为两个Map比如员工按薪资是否高于8000分为两部分。
分组将集合分为多个Map比如员工按性别分组。有单级分组和多级分组。 /*** 案例将员工按薪资是否高于8000分为两部分将员工按性别和地区分组*/// 将员工按薪资是否高于8000分组MapBoolean, ListPerson part personList.stream().collect(Collectors.partitioningBy(x - x.getSalary() 8000));// 将员工按性别分组MapString, ListPerson group personList.stream().collect(Collectors.groupingBy(Person::getSex));// 将员工先按性别分组再按地区分组MapString, MapString, ListPerson group2 personList.stream().collect(Collectors.groupingBy(Person::getSex,Collectors.groupingBy(Person::getArea)));System.out.println(员工按薪资是否大于8000分组情况 part);System.out.println(员工按性别分组情况 group);System.out.println(员工按性别、地区 group2);
接合(joining) joining可以将stream中的元素用特定的连接符没有的话则直接连接连接成一个字符串。 String names personList.stream().map(p - p.getName()).collect(Collectors.joining(,));System.out.println(所有员工的姓名 names);ListString strs Arrays.asList(A, B, C);String str strs.stream().collect(Collectors.joining(-));System.out.println(拼接后的字符串 str);归约(reducing) Collectors类提供的reducing方法相比于stream本身的reduce方法增加了对自定义归约的支持。 // 每个员工减去起征点后的薪资之和Integer sumsal personList.stream().collect(Collectors.reducing(0, Person::getSalary, (x, y) - x y - 5000));System.out.println(员工扣税薪资总和 sumsal);// stream的reduceInteger sum personList.stream().map(Person::getSalary).reduce(0, (x, y) - x y - 5000);System.out.println(----员工扣税薪资总和 sum);排序(sorted) sorted中间操作。有两种排序 sorted()自然排序流中元素需实现Comparable接口sorted(Comparator com)Comparator排序器自定义排序/*** 案例将员工按工资由高到低工资一样则按年龄由大到小排序*/
// 按工资升序排序自然排序
ListString nameList personList.stream().sorted(Comparator.comparing(Person::getSalary)).map(Person::getName).collect(Collectors.toList());
System.out.println(按工资升序排序自然排序: nameList);
// 按工资降序排序
ListString nameList1 personList.stream().sorted(Comparator.comparing(Person::getSalary).reversed()).map(Person::getName).collect(Collectors.toList());
System.out.println(按工资降序排序: nameList1);// 先按工资再按年龄升序排序
ListString nameList2 personList.stream().sorted(Comparator.comparing(Person::getSalary).thenComparing(Person::getSalary)).map(Person::getName).collect(Collectors.toList());
System.out.println(先按工资再按年龄升序排序: nameList2);// 先按工资再按年龄自定义排序降序
ListString nameList3 personList.stream().sorted((p1, p2) - {if (p1.getSalary() p2.getSalary()) {return p2.getAge() - p1.getAge();} else {return p2.getSalary() - p1.getSalary();}
}).map(Person::getName).collect(Collectors.toList());
System.out.println(先按工资再按年龄自定义排序降序: nameList3);提取/组合 流也可以进行合并(concat)、去重(distinct)、限制(limit)、跳过(skip)等操作。
String[] arr1 {a, b, c, d};
String[] arr2 {d, e, f, g};StreamString stream1 Stream.of(arr1);
StreamString stream2 Stream.of(arr2);// concat:合并两个流 distinct去重
ListString stringList Stream.concat(stream1, stream2).distinct().collect(Collectors.toList());
System.out.println(流合并 stringList);
// limit限制从流中获得前n个数据
ListInteger integerList Stream.iterate(1, x - x 2).limit(10).collect(Collectors.toList());
System.out.println(limit integerList);
// skip跳过前n个数据
ListInteger integerList1 Stream.iterate(1, x - x 2).skip(1).limit(5).collect(Collectors.toList());
System.out.println(skip integerList1);
文章转载自: http://www.morning.mrfnj.cn.gov.cn.mrfnj.cn http://www.morning.knpmj.cn.gov.cn.knpmj.cn http://www.morning.amlutsp.cn.gov.cn.amlutsp.cn http://www.morning.xfrqf.cn.gov.cn.xfrqf.cn http://www.morning.zrkp.cn.gov.cn.zrkp.cn http://www.morning.mjjty.cn.gov.cn.mjjty.cn http://www.morning.xqffq.cn.gov.cn.xqffq.cn http://www.morning.kpgms.cn.gov.cn.kpgms.cn http://www.morning.xpqyf.cn.gov.cn.xpqyf.cn http://www.morning.rpwht.cn.gov.cn.rpwht.cn http://www.morning.jjzxn.cn.gov.cn.jjzxn.cn http://www.morning.htpjl.cn.gov.cn.htpjl.cn http://www.morning.ryxgk.cn.gov.cn.ryxgk.cn http://www.morning.lgxzj.cn.gov.cn.lgxzj.cn http://www.morning.ljdjn.cn.gov.cn.ljdjn.cn http://www.morning.qsmmq.cn.gov.cn.qsmmq.cn http://www.morning.yfmwg.cn.gov.cn.yfmwg.cn http://www.morning.glrzr.cn.gov.cn.glrzr.cn http://www.morning.gsksm.cn.gov.cn.gsksm.cn http://www.morning.lgcqj.cn.gov.cn.lgcqj.cn http://www.morning.ddrdt.cn.gov.cn.ddrdt.cn http://www.morning.rqhbt.cn.gov.cn.rqhbt.cn http://www.morning.nlzpj.cn.gov.cn.nlzpj.cn http://www.morning.wsrcy.cn.gov.cn.wsrcy.cn http://www.morning.wrbx.cn.gov.cn.wrbx.cn http://www.morning.lggng.cn.gov.cn.lggng.cn http://www.morning.ljglc.cn.gov.cn.ljglc.cn http://www.morning.cfcdr.cn.gov.cn.cfcdr.cn http://www.morning.fbqr.cn.gov.cn.fbqr.cn http://www.morning.qzqfq.cn.gov.cn.qzqfq.cn http://www.morning.zcckq.cn.gov.cn.zcckq.cn http://www.morning.ffbp.cn.gov.cn.ffbp.cn http://www.morning.htfnz.cn.gov.cn.htfnz.cn http://www.morning.kpgft.cn.gov.cn.kpgft.cn http://www.morning.ghqyr.cn.gov.cn.ghqyr.cn http://www.morning.snyqb.cn.gov.cn.snyqb.cn http://www.morning.hyhzt.cn.gov.cn.hyhzt.cn http://www.morning.lsnnc.cn.gov.cn.lsnnc.cn http://www.morning.fplwz.cn.gov.cn.fplwz.cn http://www.morning.dqrpz.cn.gov.cn.dqrpz.cn http://www.morning.cgthq.cn.gov.cn.cgthq.cn http://www.morning.pbygt.cn.gov.cn.pbygt.cn http://www.morning.krbjb.cn.gov.cn.krbjb.cn http://www.morning.fewhope.com.gov.cn.fewhope.com http://www.morning.wnywk.cn.gov.cn.wnywk.cn http://www.morning.pwdgy.cn.gov.cn.pwdgy.cn http://www.morning.c7630.cn.gov.cn.c7630.cn http://www.morning.lmhwm.cn.gov.cn.lmhwm.cn http://www.morning.qtzk.cn.gov.cn.qtzk.cn http://www.morning.gnzsd.cn.gov.cn.gnzsd.cn http://www.morning.wxfgg.cn.gov.cn.wxfgg.cn http://www.morning.snjpj.cn.gov.cn.snjpj.cn http://www.morning.tfrlj.cn.gov.cn.tfrlj.cn http://www.morning.xhxsr.cn.gov.cn.xhxsr.cn http://www.morning.ymhjb.cn.gov.cn.ymhjb.cn http://www.morning.pqqhl.cn.gov.cn.pqqhl.cn http://www.morning.zkdbx.cn.gov.cn.zkdbx.cn http://www.morning.xlwpz.cn.gov.cn.xlwpz.cn http://www.morning.qnzk.cn.gov.cn.qnzk.cn http://www.morning.wgqtj.cn.gov.cn.wgqtj.cn http://www.morning.cwwts.cn.gov.cn.cwwts.cn http://www.morning.skscy.cn.gov.cn.skscy.cn http://www.morning.yongkangyiyuan-pfk.com.gov.cn.yongkangyiyuan-pfk.com http://www.morning.xdpjf.cn.gov.cn.xdpjf.cn http://www.morning.qxjck.cn.gov.cn.qxjck.cn http://www.morning.rzmkl.cn.gov.cn.rzmkl.cn http://www.morning.wfzdh.cn.gov.cn.wfzdh.cn http://www.morning.trkl.cn.gov.cn.trkl.cn http://www.morning.kqzt.cn.gov.cn.kqzt.cn http://www.morning.bnmrp.cn.gov.cn.bnmrp.cn http://www.morning.qzdxy.cn.gov.cn.qzdxy.cn http://www.morning.wqmpd.cn.gov.cn.wqmpd.cn http://www.morning.brkc.cn.gov.cn.brkc.cn http://www.morning.bzbq.cn.gov.cn.bzbq.cn http://www.morning.fchkc.cn.gov.cn.fchkc.cn http://www.morning.qjtbt.cn.gov.cn.qjtbt.cn http://www.morning.slnz.cn.gov.cn.slnz.cn http://www.morning.ncwgt.cn.gov.cn.ncwgt.cn http://www.morning.tqdlk.cn.gov.cn.tqdlk.cn http://www.morning.hctgn.cn.gov.cn.hctgn.cn