最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java 如何從list中刪除符合條件的數(shù)據(jù)

 更新時(shí)間:2021年11月17日 10:06:27   作者:年少的風(fēng)  
這篇文章主要介紹了Java 如何從list中刪除符合條件的數(shù)據(jù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

從list中刪除符合條件的數(shù)據(jù)

在Java語(yǔ)言使用中經(jīng)常會(huì)遇到需要從list中去除一些數(shù)據(jù),但是初學(xué)者經(jīng)常會(huì)遇到如下的坑:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 5, Size: 4
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at Main.remove3(Main.java:44)
at Main.main(Main.java:18)

所以在此總結(jié)一下從list中刪除數(shù)據(jù)的一些方法:

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Main {
    public static void main(String[] args) {
        ArrayList<String> strs = new ArrayList<>();
        strs.add("1");
        strs.add("32");
        strs.add("3");
        strs.add("4");
        strs.add("5");
        strs.add("36");
//        remove1(strs);
//        remove2(strs);
//        remove3(strs);
        remove4(strs);
        System.out.println("after");
        printList(strs);
    }
    //使用iterator,這個(gè)是java和Android源碼中經(jīng)常使用到的一種方法,所以最為推薦
    public static void remove1(List<String> list) {
        Iterator<String> sListIterator = list.iterator();
        while (sListIterator.hasNext()) {
            String str = sListIterator.next();
            if (str.contains("3")) {
                sListIterator.remove();
            }
        }
    }
    //倒序刪除,以防因?yàn)閯h除中間項(xiàng)導(dǎo)致數(shù)據(jù)下標(biāo)變更,使得數(shù)據(jù)出錯(cuò)
    public static void remove2(List<String> list) {
        for (int i = list.size() - 1; i >= 0; i--) {
            if (list.get(i).contains("3")) {
                list.remove(i);
            }
        }
    }
    // 順序刪除,但是對(duì)下標(biāo)和索引進(jìn)行了處理
    public static void remove3(List<String> list) {
        for (int i = 0, len = list.size(); i < len; i++) {
            if (list.get(i).contains("3")) {
                list.remove(i);
                len--;
                i--;
            }
        }
    }
    // 在遍歷過(guò)程中不直接操作原list
    public static void remove4(List<String> list) {
        List<String> temp = new ArrayList<>();
        for (String str : list) {
            if (str.contains("3")) {
                temp.add(str);
            }
        }
        list.removeAll(temp);
    }
    public static void printList(List<String> list) {
        for (String str : list) {
            System.out.println(str);
        }
    }
}

如果還有其他好的方法再補(bǔ)充。

刪除list中某個(gè)特定元素

當(dāng)數(shù)據(jù)庫(kù)查詢(xún)出數(shù)據(jù)過(guò)后,發(fā)現(xiàn)有些數(shù)據(jù)不需要,所以這里要處理一下,加入循環(huán)list,根據(jù)判斷條件去刪除的話,就會(huì)出現(xiàn)異常。

所以這里用到了java8的新特性去刪除。

  List<UserFictitious> list = new ArrayList<>();
        for (int i = 0; i < 50; i++){
            UserFictitious userFictitious = new UserFictitious();
            userFictitious.setUserFictitiousName(String.valueOf(i));
            list.add(userFictitious);
        }
  list.removeIf(item -> item.getUserFictitiousName().equals("1"));
  System.out.println(list);

底層的源碼是根據(jù)迭代器的特性去刪除,java8只是封裝進(jìn)了removeIf,簡(jiǎn)化了代碼。

  default boolean removeIf(Predicate<? super E> filter) {
        Objects.requireNonNull(filter);
        boolean removed = false;
        final Iterator<E> each = iterator();
        while (each.hasNext()) {
            if (filter.test(each.next())) {
                each.remove();
                removed = true;
            }
        }
        return removed;
    }

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java中日期時(shí)間比較的多種方法及實(shí)用代碼

    Java中日期時(shí)間比較的多種方法及實(shí)用代碼

    本文介紹了Java中不同日期時(shí)間類(lèi)的比較方法,包括java.util.Date、java.util.Calendar、java.time?API和java.sql.Timestamp,提供了使用before、after和compareTo等方法進(jìn)行日期比較的示例代碼,展示了各自的特點(diǎn)和使用場(chǎng)景,需要的朋友可以參考下
    2024-09-09
  • SSM項(xiàng)目使用攔截器實(shí)現(xiàn)登錄驗(yàn)證功能

    SSM項(xiàng)目使用攔截器實(shí)現(xiàn)登錄驗(yàn)證功能

    這篇文章主要介紹了在SSM項(xiàng)目中如何使用攔截器,實(shí)現(xiàn)登錄驗(yàn)證功能。文中的實(shí)現(xiàn)步驟講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-01-01
  • Kotlin中l(wèi)et、run、with、apply及also的用法和差別

    Kotlin中l(wèi)et、run、with、apply及also的用法和差別

    作用域函數(shù)是Kotlin比較重要的一個(gè)特性,分為5種let、run、with、apply及also,這五個(gè)函數(shù)的工作方式非常相似,但是我們需要了解這5種函數(shù)的差異,以便在不同的場(chǎng)景更好的利用它,這篇文章主要介紹了Kotlin中l(wèi)et、run、with、apply及also的差別,需要的朋友可以參考下
    2023-11-11
  • 基于@AllArgsConstructor與@Value共用的問(wèn)題解決

    基于@AllArgsConstructor與@Value共用的問(wèn)題解決

    這篇文章主要介紹了基于@AllArgsConstructor與@Value共用的問(wèn)題解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • java項(xiàng)目中使用 Lombok遇到的問(wèn)題小結(jié)

    java項(xiàng)目中使用 Lombok遇到的問(wèn)題小結(jié)

    這篇文章主要介紹了java項(xiàng)目中使用 Lombok遇到的問(wèn)題小結(jié),需要的朋友可以參考下
    2018-07-07
  • java基礎(chǔ)之類(lèi)初始化順序示例解析

    java基礎(chǔ)之類(lèi)初始化順序示例解析

    這篇文章主要為大家介紹了java基礎(chǔ)之類(lèi)初始化順序示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • Java基于elasticsearch實(shí)現(xiàn)集群管理

    Java基于elasticsearch實(shí)現(xiàn)集群管理

    這篇文章主要介紹了java基于elasticsearch實(shí)現(xiàn)集群管理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Lucene詞向量索引文件構(gòu)建源碼解析

    Lucene詞向量索引文件構(gòu)建源碼解析

    這篇文章主要為大家介紹了Lucene詞向量索引文件構(gòu)建源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Java異常處理之java.lang.ClassCastException問(wèn)題

    Java異常處理之java.lang.ClassCastException問(wèn)題

    這篇文章主要介紹了Java異常處理之java.lang.ClassCastException問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • JFreeChart折線圖的生成方法

    JFreeChart折線圖的生成方法

    這篇文章主要為大家詳細(xì)介紹了JFreeChart折線圖的生成方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06

最新評(píng)論

博湖县| 湖口县| 萨迦县| 通化市| 桓台县| 交口县| 永康市| 温宿县| 永新县| 庆阳市| 隆化县| 辽阳市| 登封市| 廊坊市| 鄂尔多斯市| 通河县| 平塘县| 奎屯市| 安徽省| 万年县| 平陆县| 璧山县| 鹿邑县| 濮阳县| 大余县| 中超| 通道| 锡林浩特市| 年辖:市辖区| 赤城县| 北碚区| 南京市| 收藏| 南部县| 青海省| 遂川县| 米易县| 辽宁省| 上栗县| 四平市| 辽中县|