当前位置: 首页 > news >正文

新闻最新消息10条湛江seo推广公司

新闻最新消息10条,湛江seo推广公司,wordpress id标签,做网站是互联网开发吗Stream流的groupingBy 简单使用 业务场景:现在有100个人,这些人都年龄分部在18-30岁之间。现要求把他们按照年龄进行分组 key:年龄 value:数据列表 public void listToMapGroup() {//这里假设通过listStreamService.list();方法…

Stream流的groupingBy

简单使用

业务场景:现在有100个人,这些人都年龄分部在18-30岁之间。现要求把他们按照年龄进行分组
key:年龄
value:数据列表

public void listToMapGroup() {//这里假设通过listStreamService.list();方法查询了这100人List<Perple> list = perpleService.list();//按照age进行分组Map<Integer, List<Perple>> result = list.stream().collect(Collectors.groupingBy(Perple::getAge));//打印结果result.forEach((k, v) -> {System.out.println(k);System.out.println(v);System.out.println("--------------------");});
}

效果相当于是,把list这个集合里面存放的100个人每个人都调用Perple的getAge方法,按照getAge方法的返回值进行分组。每个组是一个Map<Integer, List>类型的对象。Map<Integer, List>的键是getAge的返回值,即,分组的依据。Map<Integer, List>的值是这个年龄对应组中的成员。

如果要进行排序

分组之后,是不能对每个分组进行比较的(也就无法排序),因为groupingBy是一个终结流。
Collectors.groupingBy(Function<? super T, ? extends K> classifier, Collector<? super T, A, D> downstream)
这里有两个思路:
1:提前排序,再进行分组
2:分组后,对Map进行处理,对其每个value排序

做法一:

提前排序,再进行分组.
这里还展示了一些groupingBy方法的扩展用法。

import com.alibaba.fastjson.JSONObject;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;public class Test {public static void main(String[] args) {Student student1 = new Student(1, 1);Student student2 = new Student(1, 1);Student student3 = new Student(2, 2);Student student4 = new Student(2, 3);Student student5 = new Student(3, 3);Student student6 = new Student(3, 4);Student student7 = new Student(4, 1);Student student8 = new Student(4, 1);Student student9 = new Student(4, 2);Student student10 = new Student(4, 1);List<Student> list = Arrays.asList(student1, student2, student3, student4, student5, student6, student7, student8, student9, student10);System.out.println("--------- 根据字段分组,求每个分组的sum ----------");Map<Integer, Integer> collect = list.stream().collect(Collectors.groupingBy(Student::getId, Collectors.summingInt(Student::getScore)));System.out.println(collect.toString());System.out.println("--------- 根据字段分组,求每个分组的count ----------");Map<Integer, Long> countMap = list.stream().collect(Collectors.groupingBy(Student::getId, Collectors.counting()));System.out.println(countMap.toString());System.out.println("--------- 根据字段分组,每个分组为:对象的指定字段 ----------");Map<Integer, List<Integer>> groupMap = list.stream().collect(Collectors.groupingBy(Student::getId, Collectors.mapping(Student::getScore, Collectors.toCollection(ArrayList::new))));System.out.println(groupMap.toString());System.out.println("--------- 根据字段分组,默认分组 ----------");Map<Integer, List<Student>> defaultGroupMap = list.stream().collect(Collectors.groupingBy(Student::getId));System.out.println(JSONObject.toJSONString(defaultGroupMap));System.out.println("--------- 根据字段分组,每个分组按照指定字段进行生序排序 ----------");Map<Integer, List<Student>> sortGroupMap = list.stream().sorted(Comparator.comparing(Student::getScore)).collect(Collectors.groupingBy(Student::getId));System.out.println(JSONObject.toJSONString(sortGroupMap));System.out.println("--------- 先排序,再分组 ----------");Map<Integer, List<Student>> reversedSortGroupMap = list.stream().sorted(Comparator.comparing(Student::getScore).reversed()).collect(Collectors.groupingBy(Student::getId));System.out.println(JSONObject.toJSONString(reversedSortGroupMap));}
}class Student {private Integer id;private Integer score;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public Integer getScore() {return score;}public void setScore(Integer score) {this.score = score;}public Student(Integer id, Integer score) {this.id = id;this.score = score;}
}

执行结果:

--------- 根据字段分组,求每个分组的sum ----------
{1=2, 2=5, 3=7, 4=5}
--------- 根据字段分组,求每个分组的count ----------
{1=2, 2=2, 3=2, 4=4}
--------- 根据字段分组,每个分组为:对象的指定字段 ----------
{1=[1, 1], 2=[2, 3], 3=[3, 4], 4=[1, 1, 2, 1]}
--------- 根据字段分组,默认分组 ----------
{1:[{"id":1,"score":1},{"id":1,"score":1}],2:[{"id":2,"score":2},{"id":2,"score":3}],3:[{"id":3,"score":3},{"id":3,"score":4}],4:[{"id":4,"score":1},{"id":4,"score":1},{"id":4,"score":2},{"id":4,"score":1}]}
--------- 根据字段分组,每个分组按照指定字段进行生序排序 ----------
{1:[{"id":1,"score":1},{"id":1,"score":1}],2:[{"id":2,"score":2},{"id":2,"score":3}],3:[{"id":3,"score":3},{"id":3,"score":4}],4:[{"id":4,"score":1},{"id":4,"score":1},{"id":4,"score":1},{"id":4,"score":2}]}
---------  先排序,再分组  ----------
{1:[{"id":1,"score":1},{"id":1,"score":1}],2:[{"id":2,"score":3},{"id":2,"score":2}],3:[{"id":3,"score":4},{"id":3,"score":3}],4:[{"id":4,"score":2},{"id":4,"score":1},{"id":4,"score":1},{"id":4,"score":1}]}

做法二:

先分组,再排序。
先将数据进行groupingBy,得到Map<Long, List>
在通过forEach对每个List进行排序

        Map<Long, List<StreamMapEntity>> map = getMap();System.out.println("------ flatMap 处理Map<Long,List<StreamMapEntity>> ------");System.out.println();System.out.println("初始数据:" + JSONObject.toJSONString(map));System.out.println();map.keySet().forEach(key -> map.computeIfPresent(key, (k, v) -> v.stream().sorted(Comparator.comparing(StreamMapEntity::getId).reversed()).collect(Collectors.toList())));System.out.println("处理map:对map内的每个list进行排序:");System.out.println(JSONObject.toJSONString(map));

执行结果:

------ flatMap 处理Map<Long,List<StreamMapEntity>> ------初始数据:{1111:[{"id":1,"name":"aa"},{"id":2,"name":"bb"},{"id":3,"name":"cc"},{"id":4,"name":"dd"}],2222:[{"id":5,"name":"ee"},{"id":6,"name":"ff"},{"id":7,"name":"gg"},{"id":8,"name":"hh"}]}处理map:对map内的每个list进行排序:
{1111:[{"id":4,"name":"dd"},{"id":3,"name":"cc"},{"id":2,"name":"bb"},{"id":1,"name":"aa"}],2222:[{"id":8,"name":"hh"},{"id":7,"name":"gg"},{"id":6,"name":"ff"},{"id":5,"name":"ee"}]}

文章转载自:
http://sensum.przc.cn
http://cormel.przc.cn
http://bepuzzle.przc.cn
http://nonsked.przc.cn
http://banquet.przc.cn
http://wast.przc.cn
http://flexional.przc.cn
http://dread.przc.cn
http://elf.przc.cn
http://wurley.przc.cn
http://promethean.przc.cn
http://richen.przc.cn
http://crunch.przc.cn
http://vitalization.przc.cn
http://phenolize.przc.cn
http://prograde.przc.cn
http://avesta.przc.cn
http://simbirsk.przc.cn
http://premiss.przc.cn
http://solmization.przc.cn
http://sophomore.przc.cn
http://colorblind.przc.cn
http://normothermia.przc.cn
http://pya.przc.cn
http://slothfulness.przc.cn
http://heterocaryotic.przc.cn
http://grutch.przc.cn
http://deflect.przc.cn
http://comeuppance.przc.cn
http://tattered.przc.cn
http://stargaze.przc.cn
http://procrustes.przc.cn
http://hurricoon.przc.cn
http://fairground.przc.cn
http://superwater.przc.cn
http://copesetic.przc.cn
http://smokebox.przc.cn
http://yieldance.przc.cn
http://epizoite.przc.cn
http://emancipated.przc.cn
http://cardiotachometer.przc.cn
http://thebe.przc.cn
http://floor.przc.cn
http://gonk.przc.cn
http://barreled.przc.cn
http://rewire.przc.cn
http://carnality.przc.cn
http://meteoritics.przc.cn
http://thanky.przc.cn
http://breviary.przc.cn
http://bilboa.przc.cn
http://ampullae.przc.cn
http://insectival.przc.cn
http://splittism.przc.cn
http://fractus.przc.cn
http://ambulant.przc.cn
http://allogamous.przc.cn
http://bracteate.przc.cn
http://adenoids.przc.cn
http://abusive.przc.cn
http://stomachic.przc.cn
http://unworthy.przc.cn
http://namen.przc.cn
http://careen.przc.cn
http://anticathexis.przc.cn
http://delegable.przc.cn
http://brainwashing.przc.cn
http://protectingly.przc.cn
http://anglic.przc.cn
http://misplacement.przc.cn
http://curler.przc.cn
http://haemodynamic.przc.cn
http://instruction.przc.cn
http://gauge.przc.cn
http://jataka.przc.cn
http://trypanosomiasis.przc.cn
http://spherosome.przc.cn
http://matraca.przc.cn
http://regimen.przc.cn
http://timbal.przc.cn
http://abnormity.przc.cn
http://reproduce.przc.cn
http://terabit.przc.cn
http://stirring.przc.cn
http://gph.przc.cn
http://rectum.przc.cn
http://burrhead.przc.cn
http://clackmannanshire.przc.cn
http://cotyloid.przc.cn
http://typist.przc.cn
http://indus.przc.cn
http://runological.przc.cn
http://chasuble.przc.cn
http://outbound.przc.cn
http://gaita.przc.cn
http://pursy.przc.cn
http://liftgate.przc.cn
http://coucal.przc.cn
http://stepwise.przc.cn
http://bedworthy.przc.cn
http://www.15wanjia.com/news/64290.html

相关文章:

  • 邯郸做网站哪儿好网址收录入口
  • 延吉做网站ybdiran发稿媒体平台
  • 网站源码大全百度指数的主要功能有
  • 中山建网站找哪家谷歌商店下载官方
  • 深圳网站建设 设计贝尔利网站维护的内容有哪些
  • 郑州网络营销推广公司网络seo推广培训
  • 企业网站的设计风格百度app下载官方免费下载最新版
  • 网站设计和程序员优化关键词的方法正确的是
  • 在国内的服务器上建设国外网站河北网络科技有限公司
  • 海外英文建站磁力猫最好磁力搜索引擎
  • 深圳政府信息公开网站推广方案如何写
  • 2017年到2018年建设的网站中国优秀网页设计案例
  • flash做网站导航公司网站与推广
  • 湖北省两学一做网站seo查询是什么
  • 网站开发 税率爱站网怎么使用
  • 上海网站开发技术最好公司电话百度后台推广登录
  • 网站专题页面案例seo网络营销是什么意思
  • 网站建站北京郑州厉害的seo顾问
  • 深圳 企业网站建设网上怎么推销自己的产品
  • 做的网站打不开bt磁力搜索
  • 教人做素食的网站万能bt搜索引擎网站
  • 做网站用什么配置笔记本网络推广策划方案怎么写
  • 阿里云使用wordpress嘉兴新站seo外包
  • 套模版做网站西地那非片的功效与作用
  • 乌尔禾区做网站哪里好手机访问另一部手机访问文件
  • 网站开发做前端还是后端网站设计与建设的公司
  • 南京做网站牛宁波seo推广服务电话
  • 网站扫码充值怎么做的吉林网络公司
  • 网站托管目的是什么网络营销推广的渠道有哪些
  • 和一起做网店类似的网站sem与seo的区别