亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java實(shí)現(xiàn)stream的三個(gè)常用方式(toMap,groupingBy,findFirst)

 更新時(shí)間:2023年10月17日 10:40:20   作者:我老菜  
本文主要介紹了Java實(shí)現(xiàn)stream的三個(gè)常用方式,主要包括toMap,groupingBy,findFirst,具有一定的參考價(jià)值,感興趣的可以了解一下

一、stream().findFirst().orElse(null)

最簡(jiǎn)單開始:
1:查詢/刪除時(shí),接口入?yún)⒆詈脤懗膳康模ú恍枰峁﹩蝹€(gè)參數(shù)的查詢/刪除)。
2:拒絕list.get(0)的當(dāng)時(shí),改用stream().findFirst().orElse(null)。

    /**
     * LambdaQueryWrapper 沒找到就返回null,找到了返回第一條
     */
    @RequestMapping(value = "getOne", method = RequestMethod.POST)
    public ListStream getOne() {
    
        return listStreamService.list(new LambdaQueryWrapper<ListStream>()
                .eq(ListStream::getDelFlag, 0)
                .eq(ListStream::getAge, 24)
        ).stream().findFirst().orElse(null);
        
    }

二、toMap

業(yè)務(wù)場(chǎng)景:需要取出listA中指定某條數(shù)據(jù)。
拒絕循環(huán)判斷,現(xiàn)將數(shù)據(jù)轉(zhuǎn)成Map<Long,Entity>,通過map.get(Key) 獲取指定數(shù)據(jù)
key:id
value:數(shù)據(jù)

    @RequestMapping(value = "listToMap", method = RequestMethod.POST)
    public void listToMap() {
        //getList
        List<ListStream> list = listStreamService.list();
        
        //key:value = id:lisStream
        Map<Long, ListStream> result = list.stream()
                .collect(Collectors.toMap(ListStream::getId, v -> v));
                
        //打印結(jié)果
        for (Map.Entry<Long, ListStream> entry : result.entrySet()) {
            System.out.println(entry.getKey());
            System.out.println(entry.getValue());
            System.out.println("--------------------");
        }
    }

三、groupingBy

業(yè)務(wù)場(chǎng)景:有100個(gè)人,年齡分部在18-30歲。要求按照年齡進(jìn)行分組
key:年齡
value:數(shù)據(jù)列表

    @RequestMapping(value = "listToMapGroup", method = RequestMethod.POST)
    public void listToMapGroup() {
        List<ListStream> list = listStreamService.list();
        
        //按照age進(jìn)行分組
        Map<Integer, List<ListStream>> result = list.stream()
                .collect(Collectors.groupingBy(ListStream::getAge));
                
        //打印結(jié)果
        result.forEach((k, v) -> {
            System.out.println(k);
            System.out.println(v);
            System.out.println("--------------------");
        });
    }

四、Lists.newArrayList()

初始化一個(gè)有值的List。拒絕list.add()、list.addAll()

    public static void main(String[] args) {
        List<String> strList = Lists.newArrayList("1","2","3");
        System.out.println(strList);
    }

總結(jié)

1:拒絕反復(fù)請(qǐng)求數(shù)據(jù)庫(減少io),一個(gè)業(yè)務(wù)里,一張表盡量只查一次(提前將入?yún)⒕酆?,統(tǒng)一請(qǐng)求數(shù)據(jù)庫生成Map(Long,Entity),后續(xù)要用指定數(shù)據(jù)時(shí),從map中獲?。?。
2:請(qǐng)求mapper里盡量不含有業(yè)務(wù)邏輯,將mapper的方法考慮由service統(tǒng)一提供接口。避免mapper到處飛的情況。
每個(gè)service只能用自己的mapper,通過注入其他service從而調(diào)用其他mapper

到此這篇關(guān)于Java實(shí)現(xiàn)stream的三個(gè)常用方式(toMap,groupingBy,findFirst)的文章就介紹到這了,更多相關(guān)Java stream常用方式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論