做網(wǎng)站用什么主機(jī)操作系統(tǒng)品牌網(wǎng)絡(luò)營銷案例
一、概述
有這樣一個(gè)需求,在一個(gè)list集合中的對(duì)象有相同的name,我需要把相同name的對(duì)象進(jìn)行匯總計(jì)算。使用java stream來實(shí)現(xiàn)這個(gè)需求,這里做一個(gè)記錄,希望對(duì)有需求的同學(xué)提供幫助
?一、根據(jù)指定字段進(jìn)行分組
一、先準(zhǔn)備好給前端要封裝返回的實(shí)體類
package com.tingyi.pojo;import lombok.*;@Data
@AllArgsConstructor
@NoArgsConstructor
public class ColthTypeVo {//所指定的字段private String name;//統(tǒng)計(jì)的數(shù)量private Integer total;public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getTotal() {return total;}public void setTotal(Integer total) {this.total = total;}
}
?二、準(zhǔn)備好要篩選的數(shù)據(jù),我這邊是調(diào)取的第三方系統(tǒng)做的集成,各位小伙伴一般都是查詢數(shù)據(jù)庫
JSONObject jsonObject = JSON.parseObject(sync);JSONObject data = jsonObject.getJSONObject("data");List<ColthType> records = data.getList("records", ColthType.class);
三、進(jìn)行篩選分組并統(tǒng)計(jì)?
List<ColthTypeVo> collect = records.stream()//這邊建議將這個(gè)字段過濾一下 不能為空.filter(l->!StringUtils.isEmpty(l.getCarTypeName()))//如果為空的話 這里分組會(huì)報(bào)錯(cuò) key is null.collect(Collectors.groupingBy(ColthType::getCarTypeName)).entrySet().stream().map(c -> {String key = c.getKey();List<ColthType> value = c.getValue();Integer size = value.size();ColthTypeVo colthTypeVo = new ColthTypeVo();colthTypeVo.setName(key);colthTypeVo.setTotal(size);return colthTypeVo;//小伙伴要注意 這里不可以直接 new ColthTypeVo().setName(key); 可能會(huì)因?yàn)榉祷刂禐関oid爆紅 void不支持鏈?zhǔn)秸{(diào)用}).collect(Collectors.toList());
四、最終結(jié)果?
?
?
?