使用jdk1.8實現將list根據指定的值去分組的操作
阿新 • • 發佈:2020-10-12
我就廢話不多說了,大家還是直接看程式碼吧~
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根據指定的值去分組的操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。