Atitit java js groupby 分组操作法
目录
1. 分组操作得到的数据结构Map<String, List<> 1
2.1. solution 1 多个属性拼接出一个组合属性 1
2.2. solution 3 嵌套调用Java8 groupby 3
Java8的groupBy实现集合的分组,类似Mysql的group by分组功能,注意得到的是一个map
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
将多个字段拼接成一个新字段,在使用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
注意得到也是嵌套map
Map<String, Map<Integer, List<Person>>> map = people
.collect(Collectors.groupingBy(Person::getName,
Collectors.groupingBy(Person::getAge));
//调用
map.get("Fred").get(18);
————————————————
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