国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

java 對(duì)List集合中元素對(duì)象按字段分組,并收集指定字段的值

這篇具有很好參考價(jià)值的文章主要介紹了java 對(duì)List集合中元素對(duì)象按字段分組,并收集指定字段的值。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、實(shí)現(xiàn):對(duì)已有對(duì)象集合List<Persion> ,需要獲取Persion對(duì)象的字段 name分組, 并對(duì)年齡age字段值做收集

二、字段分組收集方法

?注:由于實(shí)際業(yè)務(wù)只有String類型跟數(shù)字類型,所以只對(duì)String跟Object兩種類型判空


    /**
     * 分組并字段收集
     *
     * @param list
     * @param groupFunction  類型現(xiàn)在只能為 String or Object
     * @param getFiledFunction
     * @return
     */
    public static <T, K, V> Map<K, Set<V>> groupAndCollectionField(List<T> list, Function<T, K> groupFunction, Function<T, V> getFiledFunction) {
        if (Objects.isNull(list)) {
            return new HashMap<>();
        }
        //按寄收類型分組, 并收集區(qū)號(hào)(機(jī)場(chǎng))
        Map<K, Set<V>> setMap = list.stream().filter(r-> {
                    K groupValue = groupFunction.apply(r);
                    V filedValue = getFiledFunction.apply(r);
                    //分組判空
                    boolean groupNull = Objects.isNull(groupValue);
                    if (!groupNull && groupValue instanceof String) {
                        groupNull = ((String) groupValue).length() == 0;
                    }
                    //字段判空
                    boolean filedNull = Objects.isNull(filedValue);
                    if (filedValue instanceof String) {
                        filedNull = ((String) filedValue).length() == 0;
                    }
                    //分組非空 and 字段非空 返回true; 否則返回false
                    return !groupNull && !filedNull;
                })
                .collect(Collectors.groupingBy(groupFunction, Collectors.mapping(getFiledFunction, Collectors.toSet())));
        return setMap;
    }

三、測(cè)試代碼

        //場(chǎng)景1
        System.out.println("場(chǎng)景1");
        List<Persion> persionList = new ArrayList<>();
        persionList.add(new Persion(1, "李二", null));
        persionList.add(new Persion(2, null, 30));
        persionList.add(new Persion(3, "王五", 15));
        persionList.add(new Persion(4, "陳十一", 11));
        //分組并收集字段
        Map<String, Set<Integer>> setMap = Main.groupAndCollectionField(persionList, Persion::getName, Persion::getAge);
        //遍歷
        setMap.entrySet().stream().forEach(r-> System.out.println(String.format("name:%s; age:%s",r.getKey(),r.getValue())));

        System.out.println("");
        
        //場(chǎng)景2
        System.out.println("場(chǎng)景2");
        persionList = new ArrayList<>();
        persionList.add(new Persion(1, "李二", 22));
        persionList.add(new Persion(2, "李二", 30));
        persionList.add(new Persion(3, "王五", 15));
        persionList.add(new Persion(4, "陳十一", 11));
        //分組并收集字段
        setMap = Main.groupAndCollectionField(persionList, Persion::getName, Persion::getAge);
        //遍歷
        setMap.entrySet().stream().forEach(r-> System.out.println(String.format("name:%s; age:%s",r.getKey(),r.getValue())));
    }

四、結(jié)果

java獲取list某個(gè)字段的值,java,stream,lambda文章來源地址http://www.zghlxwxcb.cn/news/detail-605636.html

到了這里,關(guān)于java 對(duì)List集合中元素對(duì)象按字段分組,并收集指定字段的值的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • stream流的使用-獲取list集合中對(duì)象的單個(gè)字段list集合,進(jìn)行累加操作

    場(chǎng)景及代碼案例源于實(shí)際項(xiàng)目 現(xiàn)存一list集合,其中保存了投資人的信息。 Person (name, age, money rateOfReturn) 其中的money表示投資人現(xiàn)有資產(chǎn),rateOfReturn表示投資年回報(bào)率 需求: 1.計(jì)算投資人年齡之和; 2.根據(jù)現(xiàn)有資產(chǎn)及投資回報(bào)率,計(jì)算所有投資人一年后的資產(chǎn)總和; 實(shí)體

    2023年04月22日
    瀏覽(96)
  • java系列之list集合分組

    java系列之list集合分組

    在Java編程中,List集合是一種常用的數(shù)據(jù)結(jié)構(gòu),用于存儲(chǔ)一組元素。有時(shí)候,我們需要對(duì)List集合中的元素進(jìn)行分組操作,即將相同屬性或特征的元素歸類到一組。這種分組操作在數(shù)據(jù)處理和分析中非常常見,能夠幫助我們更好地組織和處理數(shù)據(jù)。 Java提供了多種實(shí)現(xiàn)List接口的

    2024年02月09日
    瀏覽(20)
  • Java 1.8 List集合排序、去重、分組、過濾、合并、截取操作

    1、正序 2、逆序 3、根據(jù)某個(gè)屬性或多個(gè)屬性排序 多個(gè)屬性排序:需要添加排序條件就在后面添加.thenComparing(UserVO::getxxx),它是在上一個(gè)條件的基礎(chǔ)上進(jìn)行排序 1、去重 2、根據(jù)某個(gè)屬性去重(它將該字段還進(jìn)行排序了) 3、根據(jù)某個(gè)屬性去重(這個(gè)方法沒有排序) 4、對(duì)多個(gè)

    2024年02月01日
    瀏覽(87)
  • Java list集合中根據(jù)其中兩個(gè)字段去重

    可以使用Java 8的Stream API和Collectors.toSet()方法來實(shí)現(xiàn)根據(jù)其中兩個(gè)字段去重。 首先,使用Stream API將List轉(zhuǎn)換為Stream,然后使用distinct()方法進(jìn)行去重。distinct()方法默認(rèn)使用元素的equals()和hashCode()方法進(jìn)行去重。如果想要根據(jù)其中兩個(gè)字段進(jìn)行去重,需要重寫equals()和hashCode()方法

    2024年02月16日
    瀏覽(105)
  • Java List對(duì)象集合轉(zhuǎn)Json & Json轉(zhuǎn)List對(duì)象集合

    使用了阿里巴巴的 fastjson ?首先引入依賴 示例如下 輸出結(jié)果:

    2024年02月15日
    瀏覽(18)
  • Java List集合去重、過濾、分組、獲取數(shù)據(jù)、求最值、合并、排序、跳數(shù)據(jù)和遍歷

    請(qǐng)各大網(wǎng)友尊重本人原創(chuàng)知識(shí)分享,謹(jǐn)記本人博客:南國以南i、 使用stream().map()提取List對(duì)象的某一列值及去重 使用 findAny() 和 findFirst() 獲取第一條數(shù)據(jù) 我是南國以南i記錄點(diǎn)滴每天成長(zhǎng)一點(diǎn)點(diǎn),學(xué)習(xí)是永無止境的!轉(zhuǎn)載請(qǐng)附原文鏈接!??! 參考鏈接、參考鏈接

    2024年04月11日
    瀏覽(89)
  • Java8使用stream流給List<Map<String,Object>>分組(多字段key)

    Java8使用 stream流 給ListMapString,Object根據(jù)字段key 分組 一、項(xiàng)目場(chǎng)景: 從已得到的List集合中,根據(jù)某一元素(這里指map的key)進(jìn)行分組,篩選出需要的數(shù)據(jù)。 如果是SQL的話則使用 group by 直接實(shí)現(xiàn),代碼的方式則如下: 使用到stream流的 Collectors.groupingBy() 方法。 二、代碼實(shí)現(xiàn) 1、首

    2024年02月02日
    瀏覽(87)
  • 【Java】List更換指定位置的元素

    【Java】List更換指定位置的元素

    List更換指定位置的元素 使用的方法是 list.set() 方法: 打印結(jié)果: 參考鏈接:https://blog.csdn.net/qq_33210042/article/details/110289220

    2024年02月15日
    瀏覽(24)
  • Java8 List集合如何指定打印分隔符

    Java8 List集合如何指定打印分隔符

    背景 無論是在學(xué)習(xí)還是日常的應(yīng)用開發(fā)過程中,我們經(jīng)常會(huì)需要使用分隔符將 List 集合打印出來。 如下所示: 執(zhí)行結(jié)果如下: 如果我們想在打印的時(shí)候不打印 [] ,然后將分隔符換成 、 頓號(hào),應(yīng)該怎么操作呢? 其實(shí)有兩種方法可以實(shí)現(xiàn): 方法一:String.join(推薦) String

    2024年02月10日
    瀏覽(90)
  • Java自定義校驗(yàn)注解實(shí)現(xiàn)List、set集合字段唯一性校驗(yàn)

    Java自定義校驗(yàn)注解實(shí)現(xiàn)List、set集合字段唯一性校驗(yàn)

    在開發(fā)過程中,前端給后端傳遞集合,并且需要保證集合的實(shí)體類中的某些字段必須是惟一的,不能重復(fù)。 傳遞的集合: 集合對(duì)應(yīng)的實(shí)體類: 如果我們要保證傳遞的name或者card必須是唯一的,不能重復(fù),應(yīng)該如何實(shí)現(xiàn)呢,此時(shí)可以通過自定義注解的方式實(shí)現(xiàn)。 @Documented @Do

    2024年02月14日
    瀏覽(57)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包