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

對(duì)List集合、數(shù)組去重

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

前言:

還記得在2021我發(fā)布的第一篇博客就是關(guān)于數(shù)組的去重,從那一刻開(kāi)始,命運(yùn)的齒輪開(kāi)始轉(zhuǎn)動(dòng)……

扯遠(yuǎn)了哈哈哈,我重新寫(xiě)這篇文章只是想讓去重方式更加嚴(yán)謹(jǐn)(ps:我才不會(huì)說(shuō)是因?yàn)榧夹g(shù)成長(zhǎng)了,看不上之前寫(xiě)的了哈哈哈

方式一:

?依據(jù)Set集合的特性,使用set去重(最簡(jiǎn)潔高效)

/**
 * 使用set去重
 *
 * @param list
 */
private void setDistinct(List<String> list) {
    System.out.println("Set 開(kāi)始去重,條數(shù):" + list.size());
    List<String> listDistinctResult = new ArrayList<>(new HashSet(list));
    System.out.println("Set 去重完畢,條數(shù):" + listDistinctResult.size());
}

方式二:

?使用高級(jí)的stream流方式去重(可讀性高,效率高)

/**
 * 使用Stream 去重
 *
 * @param list
 */
private void useStreamDistinct(List<String> list) {
    System.out.println("stream 開(kāi)始去重,條數(shù):" + list.size());
    List<String> listDistinctResult = list.stream().distinct().collect(Collectors.toList());
    System.out.println("stream 去重完畢,條數(shù):" + listDistinctResult.size());
}

方式三:

?使用list.contain去重(效率一般)

/**
 * 使用 list.contain 去重,返回一個(gè)新集合
 *
 * @param list
 */
private void listContainDistinct(List<String> list) {
    System.out.println("contains 開(kāi)始去重,舊集合條數(shù):" + list.size());
    List<String> listDistinctResult = new ArrayList<>();
    for (String str : list) {
        if (!listDistinctResult.contains(str)) {
            listDistinctResult.add(str);
        }
    }
    System.out.println("contains 去重完畢,新集合條數(shù):" + listDistinctResult.size());
}

方式四:

喜聞樂(lè)見(jiàn)的for循環(huán)去重(最常見(jiàn),數(shù)據(jù)量大不建議使用)

/**
 * 使用for循環(huán)去重
 * @param list
 */
private void useForDistinct(List<String> list) {
    System.out.println("list 雙循環(huán) 開(kāi)始去重,條數(shù):" + list.size());
    for (int i = 0; i < list.size(); i++) {
        for (int j = i + 1; j < list.size(); j++) {
            if (list.get(i).equals(list.get(j))) {
                list.remove(j);
            }
        }
    }
    System.out.println("list 雙循環(huán)  去重完畢,條數(shù):" + list.size());
}

特殊情況:

以上都是簡(jiǎn)單的list集合去重,但是當(dāng)我們遇到一些特殊情況,比如:當(dāng)一個(gè)集合中存的是Map,Map中有一些鍵值是重復(fù),而我們需要去除這些重復(fù)的對(duì)象;以上的三種方式就不太適用了,這種情況就只能使用多層級(jí)for循環(huán)來(lái)做了(這種復(fù)雜情況應(yīng)該可以使用stream來(lái)做,不過(guò)沒(méi)試過(guò)就不說(shuō)了),當(dāng)然數(shù)據(jù)量大的話(huà)肯定效率是比較吃緊的,因此如果在不需要數(shù)據(jù)實(shí)時(shí)同步的情況下,可以考慮新開(kāi)線(xiàn)程去執(zhí)行這個(gè)去重然后走之后的業(yè)務(wù)流程

這種特殊情況的代碼如下:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-629363.html

/**
     * 數(shù)組去重
     * (目前僅針對(duì)于前三列相同進(jìn)行去重;
     * 例如:業(yè)務(wù)層面來(lái)講:即當(dāng)用戶(hù)名,身份證,手機(jī)號(hào),郵箱等重要信息都相同時(shí),
     * 去除這一重復(fù)數(shù)據(jù))
     * 
     * @param dataList
     * @return
     */
    private List<Map<Integer, String>> removeSameMapData(List<Map<Integer, String>> dataList) {
        int i = 0;
        List<Map<Integer, String>> distinctList = new ArrayList<>();
        for (Map<Integer, String> map : dataList) {
            boolean isDuplicate = false;
            for (Map<Integer, String> distinctMap : distinctList) {
                for (Map.Entry<Integer, String> entry : map.entrySet()) {
                    Integer key = entry.getKey();
                    if (key <= 3 && StringUtils.equals(map.get(key), distinctMap.get(key))){
                        i ++;
                    }
                    if (i >= 3){
                        i = 0;
                        isDuplicate = true;
                        break;
                    }
                }
            }
            if (!isDuplicate) {
                distinctList.add(map);
            }
        }
        return distinctList;
    }

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

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀(guān)點(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)文章

  • Java中List集合對(duì)象去重及按屬性去重的8種方法

    是大家最容易想到的,先把List數(shù)據(jù)放入Set,因?yàn)镾et數(shù)據(jù)結(jié)構(gòu)本身具有去重的功能,所以再將SET轉(zhuǎn)為L(zhǎng)ist之后就是去重之后的結(jié)果。這種方法在去重之后會(huì)改變?cè)械腖ist元素順序,因?yàn)镠ashSet本身是無(wú)序的,而TreeSet排序也不是List種元素的原有順序。 去重后的集合: [kobe, james,

    2024年04月15日
    瀏覽(842)
  • Java 1.8 List集合排序、去重、分組、過(guò)濾、合并、截取操作

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

    2024年02月01日
    瀏覽(87)
  • JAVA8 獲取list集合中重復(fù)的元素和獲取去重?cái)?shù)據(jù)

    JAVA8 獲取list集合中重復(fù)的元素和獲取去重?cái)?shù)據(jù)

    1.java8獲取list集合中重復(fù)的元素 2.java8根據(jù)List對(duì)象屬性獲取重復(fù)數(shù)據(jù)和獲取去重后數(shù)據(jù) 2.1獲取重復(fù)數(shù)據(jù) 結(jié)果: 根據(jù)多個(gè)屬性獲取重復(fù)數(shù)據(jù),還在摸索中,歡迎大家來(lái)指點(diǎn)?。。。。?2.2獲取去重后數(shù)據(jù) 結(jié)果:

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

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

    2024年04月11日
    瀏覽(89)
  • Java 一個(gè)數(shù)組集合List<People> 賦值給另一個(gè)數(shù)組集合List<NewPeople> ,兩個(gè)數(shù)組集合屬性部分一致。

    下面是一個(gè)Demo, 具體要根據(jù)自己的業(yè)務(wù)調(diào)整。

    2024年01月23日
    瀏覽(94)
  • 使用java8 新特性stream流對(duì)List<Map<String, Object>>集合進(jìn)行遍歷、過(guò)濾、查詢(xún)、去重、排序、分組

    對(duì)于一個(gè)ListMapString, Object類(lèi)型的數(shù)據(jù),可以使用Java 8的新特性stream流來(lái)進(jìn)行遍歷、過(guò)濾、查詢(xún)、去重、排序、分組等操作。 遍歷: 過(guò)濾: 查詢(xún): 去重: 排序: 分組:

    2024年02月10日
    瀏覽(106)
  • 【Java集合與數(shù)組】List<T>數(shù)組和數(shù)組List<T>的區(qū)別(124)

    List數(shù)組 :存儲(chǔ)List的數(shù)組,即:數(shù)組中的元素是:List; 數(shù)組List :存儲(chǔ)數(shù)組的List,即:List中的數(shù)據(jù)是類(lèi)型的數(shù)組; 測(cè)試案例: 測(cè)試輸出:

    2024年02月11日
    瀏覽(21)
  • 【Java】集合List轉(zhuǎn)換為數(shù)組【toArray() /stream()流】實(shí)現(xiàn)

    在Java中,集合(List 接口的實(shí)現(xiàn)類(lèi))提供了一個(gè)名為 toArray 的方法,用于將集合中的元素轉(zhuǎn)換成數(shù)組。該方法有兩個(gè)主要的重載形式,分別用于不同的情況。 這個(gè)方法將集合中的元素復(fù)制到一個(gè)指定類(lèi)型的數(shù)組中,并返回該數(shù)組。 如果指定的數(shù)組大小足夠容納集合中的所有

    2024年02月03日
    瀏覽(19)
  • java 集合去重、獲取、統(tǒng)計(jì)重復(fù)元素

    開(kāi)發(fā)過(guò)程中常遇見(jiàn)的三種問(wèn)題:集合去重、獲取重復(fù)元素、統(tǒng)計(jì)重復(fù)次數(shù)。 網(wǎng)上搜了下,實(shí)現(xiàn)過(guò)程五花八門(mén),這里簡(jiǎn)單匯總下我覺(jué)得比較常用的方式: 方法:List轉(zhuǎn)set;一行代碼即可; 前提是不需要獲取重復(fù)元素和統(tǒng)計(jì)重復(fù)次數(shù) ,最簡(jiǎn)單的就是把List轉(zhuǎn)為Set,眾所周知,set的

    2024年02月16日
    瀏覽(52)
  • Java List按照某字段去重

    Java List按照某字段去重

    Java8流的新類(lèi)java.util.stream.Collectors實(shí)現(xiàn)了java.util.stream.Collector接口,同時(shí)又提供了大量的方法對(duì)流(stream)的元素執(zhí)行各種統(tǒng)計(jì)操作。 執(zhí)行結(jié)果如下 但是這種方式必須要 每個(gè)鍵值對(duì)都一樣,才會(huì)被判定成重復(fù)的 ,否則不會(huì)被判為重復(fù),如下。 執(zhí)行結(jié)果如下 雖然name的值一樣,但

    2024年02月06日
    瀏覽(133)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包