Atitit java js groupby 分组操作法

目录

1. 分组操作得到的数据结构Map<String, List<> 1

1.1. 1.对集合按照单个属性分组 1

2. 2对集合按照多个属性分组 1

2.1. solution 1 多个属性拼接出一个组合属性 1

2.2. solution 3 嵌套调用Java8 groupby 3

3. Js的分组 3

  1. 分组操作得到的数据结构Map<String, List<>

Java8的groupBy实现集合的分组,类似Mysql的group by分组功能,注意得到的是一个map

  1. 1.对集合按照单个属性分组

e.g. 按照skuId分组

Map<String, List<EntryDeliveryDetailywk>> detailsMap01 = dtos1.stream()

.collect(Collectors.groupingBy(EntryDeliveryDetailywk::getskuId));

————————————————

版权声明:本文为CSDN博主「kris999」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/kris1025/article/details/80714361

  1. 2对集合按照多个属性分组

    1. solution 1 多个属性拼接出一个组合属性

将多个字段拼接成一个新字段,在使用Java8的groupBy进行分组

Map<String, List<EntryDeliveryDetailywk>> detailmap = details.stream()

.collect(Collectors.groupingBy(d -> fetchGroupKey(d) ));

private String fetchGroupKey(EntryDeliveryDetailywk detail){

return detail.getSkuId().toString()

+ detail.getItemsName()

+ detail.getWarehouseId().toString()

+ detail.getSupplierId().toString();

}

1

2

3

4

5

6

7

8

9

solution 2 造静态内部类

在集合元素类里构造静态内部类(成员变量即分组的对应多个属性)

e.g.

//静态内部类

class Person {

public static class NameAge {

public NameAge(String name, int age) {

...

}

// 注意 重写方法 must implement equals and hash function

}

public NameAge getNameAge() {

return new NameAge(name, age);

}

}

//分组

Map<NameAge, List<Person>> map = people.collect(Collectors.groupingBy(Person::getNameAge));

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

  1. solution 3 嵌套调用Java8 groupby

注意得到也是嵌套map

Map<String, Map<Integer, List<Person>>> map = people

.collect(Collectors.groupingBy(Person::getName,

Collectors.groupingBy(Person::getAge));

//调用

map.get("Fred").get(18);

————————————————

  1. Js的分组

function grp()

{

var grpkey="cate";

var storage=window.localStorage;

for(var i=0;i<storage.length;i++){

try{

var key=storage.key(i);

var v=storage.getItem(key);

var  vo=JSON.parse(v);

console.log(key);

var lst_item={};

var  grpkeyVal=vo[grpkey];

var arrlist=getGrpItemArrlistByItemkey(vo[grpkey]);

vo.localkey=key;

arrlist.push(vo);

grpObj[grpkeyVal]=arrlist;

}catch(e){}

}

console.log(grpObj);

}

var grpObj={};

function getGrpItemArrlistByItemkey(grpkeyVal)

{

var arrlist=grpObj[grpkeyVal];

if(!arrlist || arrlist.length==0 )

{

arrlist=new Array();

}

return arrlist;

}

版权声明:本文为CSDN博主「kris999」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/kris1025/article/details/80714361

Atitit java js groupby 分组操作法相关推荐

  1. Atitit  数据存储的分组聚合 groupby的实现attilax总结

    Atitit  数据存储的分组聚合 groupby的实现attilax总结 1. 聚合操作1 1.1. a.标量聚合 流聚合1 1.2. b.哈希聚合2 1.3. 所有的最优计划的选择都是基于现有统计 ...

  2. java group by_Java实现GroupBy/分组TopN功能

    详情 在Java 8 的Lambda(stream)之前,要在Java代码中实现相似SQL中的group by分组聚合功能,还是比较困难的.这之前Java对函数式编程支持不是很好,Scala则把函数式 ...

  3. Atitit java 二维码识别 图片识别

    Atitit java 二维码识别 图片识别 1.1. 解码1 1.2. 首先,我们先说一下二维码一共有40个尺寸.官方叫版本Version.1 1.3. 二维码的样例:2 1.4. 定位图案2 1. ...

  4. java 8 集合分组_Java 8:按集合分组

    java 8 集合分组 在继续阅读Venkat Subramaniam的" Java函数式编程 "时,我到达了介绍Stream#collect函数的那部分. 我们想收集一个人,按年 ...

  5. Atitit.java jna  调用c  c++ dll的原理与实践  总结  v2  q27

    Atitit.java jna  调用c  c++ dll的原理与实践  总结  v2  q27 1. Jna简单介绍1 2. Jna范例halo owrld1 3. Jna概念2 3.1. (1)需 ...

  6. Atitit JAVA p2p设计与总结  JXTA 2

    Atitit JAVA p2p设计与总结  JXTA 2 JXTA 2 是开放源代码 P2P 网络的第二个主要版本,它利用流行的.基于 Java 的参考实现作为构建基础.在设计方面进行了重要的修改,以 ...

  7. Atitit.Java exe bat  作为windows系统服务程序运行

    Atitit.Java exe bat  作为windows系统服务程序运行 1. 使用SC命令+srvany.exe (不错,推荐)+net start1 1.1. First 创建一个java的运 ...

  8. atitit. java jsoup html table的读取解析 总结

    atitit. java jsoup html table的读取解析 总结 1. 两个大的parser ,,,jsoup 跟个   htmlparser 1 2. 资料比较 1 3. jsoup越佳. ...

  9. Atitit Java OpenCV 捕获视频

    Atitit Java  OpenCV 捕获视频 ,打开一段视频或默认的摄像头 有两种方法,一种是在定义类的时候,一种是用open()方法. 一. 读取视频序列 OpenCV提供了一个简便易用的框架以 ...

  10. Atitit.java c#这类编程语言的设计失败点attilax总结

    Atitit.java c#这类编程语言的设计失败点attilax总结 1. Npe1 2. Api粒度过小而又没有提供最常用模式1 3. checked exception(jeig n jyejy ...

最新文章

  1. 将信息写入TXT文本中(java)
  2. 职业高中高一计算机的基本知识,职业高中计算机论文
  3. 网管的一天——按小时记录生活
  4. Python+Selenium自动化篇-5-获取页面信息
  5. 使用git同时连接gitlab和GitHub
  6. pta 是否完全二叉搜索树_23.二叉搜索树的后序遍历序列
  7. 计算机桌面桌面设置动态视频,电脑壁纸 篇一:电脑设置动态视频桌面图文教程...
  8. 无线传感网络——串口通信
  9. SigFox与LoRa技术原理、应用场景和商业模式上的比较
  10. java:判断字符串的开始或结尾
  11. MP FILTRI FMP0394BAA6M25NP01
  12. 南邮 OJ 2001 水獭看动漫
  13. appium用list定位相册里的图片
  14. EventBus 3.0 事件公交车
  15. 微信公众号点歌台php,【php】微信公众平台接口开发--点歌
  16. mysql表的导入和导出
  17. PC 电脑硬件检测相关工具
  18. Flutter Scaffold
  19. [数图] 实验三 傅里叶变换及其应用
  20. 《论文阅读》FlowStep3D: Model Unrolling for Self-Supervised Scene Flow Estimation

热门文章

  1. 查找css,查找CSS样式
  2. apache php过期,设置HTTP使用PHP和Apache过期头
  3. php微信公众号项目域名,微信公众号里“JS接口域名”实现分享功能
  4. PHP 中 flush() 与 ob_flush() 的区别
  5. algorithm头文件中的函数:remove()与remove_if() 函数,……
  6. 使用python构建基于hadoop的mapreduce日志分析平台
  7. 链接link使用href=“#”和href=##的区别
  8. OpenCV下的图片旋转(转)
  9. javascript窗口属性示意图
  10. MAX5内存盒给至强松绑 IBM X5架构继往开来