找准目标,不断前行

JAVA lambda分组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public static void main(String[] args) {
 
        List<Map<String,Object>> list = new ArrayList<>();
 
        Map<String,Object> map1 = new HashMap<String, Object>();
        map1.put("stockCode","000001.SZ");
        map1.put("stockName","平安银行");
        map1.put("traddate","2023-06-07");
 
        Map<String,Object> map2 = new HashMap<String, Object>();
        map2.put("stockCode","000002.SZ");
        map2.put("stockName","万科A");
        map2.put("traddate","2023-06-07");
 
        Map<String,Object> map3 = new HashMap<String, Object>();
        map3.put("stockCode","000002.SZ");
        map3.put("stockName","万科A");
        map3.put("traddate","2023-06-08");
 
        list.add(map1);
        list.add(map2);
        list.add(map3);
 
        //通过股票去重该list中某个key并存储到list中
        List<Object> distinctStockList = list.stream().map(m -> m.get("stockCode")).distinct().collect(Collectors.toList());
 
        System.err.println("去重后股票列表为===" + distinctStockList.toString());
 
        //通过股票分组该list
        Map<Object, List<Map<String, Object>>> stockCollect = list.stream().collect(Collectors.groupingBy(m -> m.get("stockCode")));
 
        for (int i = 0; i < distinctStockList.size(); i++) {
 
            List<Map<String, Object>> listByStock = stockCollect.get(distinctStockList.get(i));
            System.err.println("根据单个股票输出===" + listByStock.toString());
 
        }
    }

  打印输出为:

去重后股票列表为===[000001.SZ, 000002.SZ]
根据单个股票输出===[{stockName=平安银行, traddate=2023-06-07, stockCode=000001.SZ}]
根据单个股票输出===[{stockName=万科A, traddate=2023-06-07, stockCode=000002.SZ}, {stockName=万科A, traddate=2023-06-08, stockCode=000002.SZ}]

 

posted @   kevinZhuZhu  阅读(193)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示