1. 程式人生 > 程式設計 >使用jdk1.8實現將list根據指定的值去分組的操作

使用jdk1.8實現將list根據指定的值去分組的操作

我就廢話不多說了,大家還是直接看程式碼吧~

Map<String,List<CommentQuery>> commentList = list.stream().collect(Collectors.groupingBy(CommentQuery::getNewsId));
for (Map.Entry<String,List<CommentQuery>> entry : commentList.entrySet()) {
String key = HOT_LIST_KEY + entry.getKey();
if (entry.getValue().isEmpty()) {
stringRedisTemplate.opsForValue().set(key,"");
} else {
Gson gson = new Gson();
String json = gson.toJson(entry.getValue());
//先刪除redis資料然後在插入新的牛評資料
stringRedisTemplate.delete(key);
stringRedisTemplate.opsForValue().set(key,json);
stringRedisTemplate.expire(key,1,TimeUnit.DAYS);
}
}

補充知識:java8 list集合利用stream 根據元素的指定屬性進行分組統計

需求是對指定集合的學生資訊,根據班級分組統計每個班所有學生的憑證數量。

    List<HashMap<String,Object>> result = new ArrayList<>(); 
    List<HashMap<String,Object>> list = getList(countVo); 
    list.stream()
        .collect(Collectors.groupingBy(map -> map.get("className"),Collectors.toList()))
        .forEach((key,groupMap) -> {
            HashMap<String,Object> stringObjectHashMap = groupMap.stream().reduce((item1,item2) -> {
            Integer pzListNo = item1.get("pzListNo") == null ? 0 : (Integer) item1.get("pzListNo");
            Integer pzListNo2 = item2.get("pzListNo") == null ? 0 : (Integer) item2.get("pzListNo");
 
            item1.put("pzListNo",pzListNo + pzListNo2);
            return item1;
          }).get();
 
          result.add(stringObjectHashMap);
        }); 
 
    return result;

以上這篇使用jdk1.8實現將list根據指定的值去分組的操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。