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

Java中List介紹及常見方法和五種遍歷方式詳解

 更新時(shí)間:2024年12月26日 08:56:13   作者:漫天轉(zhuǎn)悠  
這篇文章主要給大家介紹了關(guān)于Java中List介紹及常見方法和五種遍歷方式的相關(guān)資料,Java的List接口是集合框架的一部分,定義了一個(gè)有序的集合,允許存儲(chǔ)重復(fù)的元素,并且可以通過索引訪問這些元素,需要的朋友可以參考下

Java的List介紹

在Java中,List接口是集合框架的一部分,它定義了一個(gè)有序的集合,允許存儲(chǔ)重復(fù)的元素,并且可以通過索引訪問這些元素。List繼承自Collection接口,提供了額外的功能來處理有序集合。List的主要特點(diǎn)包括:

  • 有序性:存取元素的順序與插入時(shí)的順序一致。
  • 可重復(fù)性:允許存儲(chǔ)重復(fù)的元素。
  • 索引訪問:可以通過整數(shù)索引來訪問和操作元素。

常見的List實(shí)現(xiàn)類有ArrayListLinkedList、VectorStack等。其中,ArrayList基于動(dòng)態(tài)數(shù)組實(shí)現(xiàn),適合頻繁的隨機(jī)訪問;而LinkedList基于雙向鏈表實(shí)現(xiàn),更適合頻繁的插入和刪除操作。

List常見方法

以下是List接口的一些常用方法及其示例代碼:

  • 添加元素

    • add(E e):向列表末尾添加一個(gè)元素。
    • add(int index, E element):在指定位置插入元素,原有元素將向后移動(dòng)。
    • addAll(Collection<? extends E> c):將指定集合中的所有元素按順序添加到列表的末尾。
    • addAll(int index, Collection<? extends E> c):從指定位置開始,將指定集合中的所有元素插入到列表中。
    import java.util.ArrayList;
    import java.util.List;
    
    public class ListAddExample {
        public static void main(String[] args) {
            List<String> list = new ArrayList<>();
            list.add("Apple");
            list.add("Banana");
            list.add(1, "Orange"); // 在索引1處插入"Orange"
            System.out.println("After adding elements: " + list);
    
            List<String> moreFruits = new ArrayList<>();
            moreFruits.add("Grape");
            moreFruits.add("Peach");
            list.addAll(moreFruits); // 添加到末尾
            list.addAll(1, moreFruits); // 從索引1開始添加
            System.out.println("After adding all elements: " + list);
        }
    }
    
  • 獲取元素

    • get(int index):返回列表中指定位置的元素。
    • indexOf(Object o):返回首次出現(xiàn)的指定元素的索引;如果未找到,則返回-1。
    • lastIndexOf(Object o):返回最后一次出現(xiàn)的指定元素的索引;如果未找到,則返回-1。
    import java.util.ArrayList;
    import java.util.List;
    
    public class ListGetExample {
        public static void main(String[] args) {
            List<String> list = new ArrayList<>();
            list.add("Apple");
            list.add("Banana");
            list.add("Orange");
    
            String fruit = list.get(1); // 獲取索引1處的元素
            System.out.println("Element at index 1: " + fruit);
    
            int index = list.indexOf("Orange"); // 查找"Orange"的索引
            System.out.println("Index of 'Orange': " + index);
    
            int lastIndex = list.lastIndexOf("Banana"); // 查找最后一個(gè)"Banana"的索引
            System.out.println("Last index of 'Banana': " + lastIndex);
        }
    }
    
  • 修改元素

    • set(int index, E element):用指定元素替換列表中指定位置的元素,并返回被替換的元素。
    import java.util.ArrayList;
    import java.util.List;
    
    public class ListSetExample {
        public static void main(String[] args) {
            List<String> list = new ArrayList<>();
            list.add("Apple");
            list.add("Banana");
            list.add("Orange");
    
            String oldFruit = list.set(1, "Grape"); // 修改索引1處的元素
            System.out.println("Replaced element: " + oldFruit);
            System.out.println("Updated list: " + list);
        }
    }
    
  • 刪除元素

    • remove(int index):移除列表中指定位置的元素,并返回被移除的元素。
    • remove(Object o):移除列表中第一次出現(xiàn)的指定元素(僅當(dāng)存在時(shí)),并返回true,否則返回false
    import java.util.ArrayList;
    import java.util.List;
    
    public class ListRemoveExample {
        public static void main(String[] args) {
            List<String> list = new ArrayList<>();
            list.add("Apple");
            list.add("Banana");
            list.add("Orange");
    
            String removedFruit = list.remove(1); // 移除索引1處的元素
            System.out.println("Removed element: " + removedFruit);
            System.out.println("Updated list: " + list);
    
            boolean isRemoved = list.remove("Apple"); // 移除第一個(gè)"Apple"
            System.out.println("Is 'Apple' removed? " + isRemoved);
            System.out.println("Final list: " + list);
        }
    }
    
  • 查詢?cè)?/strong>

    • contains(Object o):如果列表包含指定的元素,則返回true。
    • isEmpty():如果列表不包含任何元素,則返回true。
    import java.util.ArrayList;
    import java.util.List;
    
    public class ListQueryExample {
        public static void main(String[] args) {
            List<String> list = new ArrayList<>();
            list.add("Apple");
            list.add("Banana");
            list.add("Orange");
    
            boolean containsBanana = list.contains("Banana");
            System.out.println("Does the list contain 'Banana'? " + containsBanana);
    
            boolean isEmpty = list.isEmpty();
            System.out.println("Is the list empty? " + isEmpty);
        }
    }
    
  • 其他操作

    • clear():從列表中移除所有元素。
    • size():返回列表中的元素個(gè)數(shù)。
    • iterator():返回一個(gè)迭代器,用于遍歷列表中的元素。
    • listIterator():返回一個(gè)ListIterator,可以雙向遍歷列表,并支持在遍歷過程中添加或刪除元素。
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    import java.util.ListIterator;
    
    public class ListOtherOperationsExample {
        public static void main(String[] args) {
            List<String> list = new ArrayList<>();
            list.add("Apple");
            list.add("Banana");
            list.add("Orange");
    
            System.out.println("List size: " + list.size());
    
            Iterator<String> iterator = list.iterator();
            while (iterator.hasNext()) {
                System.out.println("Iterator: " + iterator.next());
            }
    
            ListIterator<String> listIterator = list.listIterator();
            while (listIterator.hasNext()) {
                System.out.println("ListIterator forward: " + listIterator.next());
            }
            while (listIterator.hasPrevious()) {
                System.out.println("ListIterator backward: " + listIterator.previous());
            }
    
            list.clear(); // 清空列表
            System.out.println("Is the list empty after clearing? " + list.isEmpty());
        }
    }
    

五種遍歷方式

  • 迭代器(Iterator)

    • 使用Iterator接口提供的hasNext()next()方法來遍歷列表。這種方式適用于需要在遍歷過程中移除元素的情況,因?yàn)?code>Iterator提供了安全地移除元素的能力,避免了ConcurrentModificationException的風(fēng)險(xiǎn)。
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    
    public class IteratorTraversalExample {
        public static void main(String[] args) {
            List<String> list = new ArrayList<>();
            list.add("Apple");
            list.add("Banana");
            list.add("Orange");
    
            Iterator<String> iterator = list.iterator();
            while (iterator.hasNext()) {
                String item = iterator.next();
                System.out.println(item);
                if ("Banana".equals(item)) {
                    iterator.remove(); // 安全地移除當(dāng)前元素
                }
            }
            System.out.println("List after removal: " + list);
        }
    }
    
  • 增強(qiáng)for循環(huán)(Enhanced for loop)

    • 增強(qiáng)for循環(huán)(也稱為foreach循環(huán))提供了一種更簡潔的方式來遍歷List,無需顯式地管理索引。代碼更加清晰易讀,適合不需要索引信息的場景。
    import java.util.ArrayList;
    import java.util.List;
    
    public class EnhancedForLoopTraversalExample {
        public static void main(String[] args) {
            List<String> list = new ArrayList<>();
            list.add("Apple");
            list.add("Banana");
            list.add("Orange");
    
            for (String item : list) {
                System.out.println(item);
            }
        }
    }
    
  • 普通for循環(huán)

    • 使用傳統(tǒng)的for循環(huán)是遍歷List最直接的方式之一。這種方式允許你通過索引訪問列表中的元素,適用于需要知道當(dāng)前元素位置或需要根據(jù)索引進(jìn)行操作的情況。
    import java.util.ArrayList;
    import java.util.List;
    
    public class ForLoopTraversalExample {
        public static void main(String[] args) {
            List<String> list = new ArrayList<>();
            list.add("Apple");
            list.add("Banana");
            list.add("Orange");
    
            for (int i = 0; i < list.size(); i++) {
                System.out.println("Index " + i + ": " + list.get(i));
            }
        }
    }
    
  • Stream API(Java 8+)

    • 自Java 8起引入的Stream API為集合操作提供了強(qiáng)大的功能,包括但不限于過濾、映射、排序等。它允許以聲明式的方式編寫復(fù)雜的集合操作邏輯,并且可以輕松地轉(zhuǎn)換成并行流(parallel stream),從而利用多核處理器的優(yōu)勢(shì)加速處理速度。
    import java.util.ArrayList;
    import java.util.List;
    
    public class StreamApiTraversalExample {
        public static void main(String[] args) {
            List<String> list = new ArrayList<>();
            list.add("Apple");
            list.add("Banana");
            list.add("Orange");
    
            list.stream().forEach(System.out::println); // 單線程遍歷
            // 或者使用并行流
            // list.parallelStream().forEach(System.out::println);
        }
    }
    
  • 列表迭代器(ListIterator)

    • ListIteratorIterator的一個(gè)子接口,專門用于List集合。它不僅支持雙向遍歷(向前和向后),還可以在遍歷過程中添加或刪除元素。這使得ListIterator在某些特定場景下非常有用。
    import java.util.ArrayList;
    import java.util.List;
    import java.util.ListIterator;
    
    public class ListIteratorTraversalExample {
        public static void main(String[] args) {
            List<String> list = new ArrayList<>();
            list.add("Apple");
            list.add("Banana");
            list.add("Orange");
    
            ListIterator<String> listIterator = list.listIterator();
            while (listIterator.hasNext()) {
                String item = listIterator.next();
                System.out.println("Forward: " + item);
                if ("Banana".equals(item)) {
                    listIterator.add("Grape"); // 在當(dāng)前元素后添加新元素
                }
            }
            System.out.println("List after addition: " + list);
    
            while (listIterator.hasPrevious()) {
                String item = listIterator.previous();
                System.out.println("Backward: " + item);
                if ("Banana".equals(item)) {
                    listIterator.remove(); // 移除當(dāng)前元素
                }
            }
            System.out.println("List after removal: " + list);
        }
    }
    

總結(jié)

List接口及其常見實(shí)現(xiàn)類如ArrayListLinkedList是Java編程中不可或缺的部分,提供了豐富的API來處理有序集合。通過理解List的特點(diǎn)和常用方法,以及掌握五種遍歷方式,開發(fā)者可以根據(jù)具體需求選擇最合適的方式來操作List集合。無論是簡單的遍歷還是復(fù)雜的集合操作,Java都提供了靈活且高效的解決方案。

到此這篇關(guān)于Java中List介紹及常見方法和五種遍歷方式的文章就介紹到這了,更多相關(guān)Java List常見方法和遍歷方式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JPA中EntityListeners注解的使用詳解

    JPA中EntityListeners注解的使用詳解

    這篇文章主要介紹了JPA中EntityListeners注解的使用詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-01-01
  • SpringCloud的JPA連接PostgreSql的教程

    SpringCloud的JPA連接PostgreSql的教程

    這篇文章主要介紹了SpringCloud的JPA接入PostgreSql 教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-06-06
  • Java調(diào)用騰訊云短信API接口的實(shí)現(xiàn)

    Java調(diào)用騰訊云短信API接口的實(shí)現(xiàn)

    這篇文章主要介紹了Java調(diào)用騰訊云短信API接口的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • SpringBoot多數(shù)據(jù)源讀寫分離的自定義配置問題及解決方法

    SpringBoot多數(shù)據(jù)源讀寫分離的自定義配置問題及解決方法

    這篇文章主要介紹了SpringBoot多數(shù)據(jù)源讀寫分離的自定義配置,我們可以通過自定義配置數(shù)據(jù)庫配置類來解決這個(gè)問題,方式有很多,不同的業(yè)務(wù)采用的方式也不同,下面我簡單的介紹我們項(xiàng)目的使用的方法
    2022-06-06
  • java:無法訪問org.springframework.boot.SpringApplication問題

    java:無法訪問org.springframework.boot.SpringApplication問題

    這篇文章主要介紹了java:無法訪問org.springframework.boot.SpringApplication問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • SpringBoot自定義轉(zhuǎn)換器用法詳解

    SpringBoot自定義轉(zhuǎn)換器用法詳解

    在SpringBoot中,轉(zhuǎn)換器用于將一個(gè)類型的值轉(zhuǎn)換為另一個(gè)類型,這在處理HTTP請(qǐng)求參數(shù)、響應(yīng)結(jié)果、表單數(shù)據(jù)等方面非常有用,SpringBoot提供了多種方式來定義和使用轉(zhuǎn)換器,本文給大家介紹了
    如何使用SpringBoot自定義轉(zhuǎn)換器,需要的朋友可以參考下
    2023-08-08
  • Java使用阻塞隊(duì)列BlockingQueue實(shí)現(xiàn)生產(chǎn)者消費(fèi)者的方法

    Java使用阻塞隊(duì)列BlockingQueue實(shí)現(xiàn)生產(chǎn)者消費(fèi)者的方法

    BlockingQueue是一個(gè)支持阻塞插入和移除操作的隊(duì)列,常用于多線程環(huán)境下的生產(chǎn)者和消費(fèi)者場景,文章介紹了阻塞隊(duì)列BlockingQueue的概念和其在生產(chǎn)者消費(fèi)者模式中的應(yīng)用,提供了一個(gè)簡單的示例,展示了如何使用ArrayBlockingQueue來實(shí)現(xiàn)生產(chǎn)者消費(fèi)者模式
    2024-11-11
  • Java中的內(nèi)存模型(JMM)和鎖機(jī)制詳解

    Java中的內(nèi)存模型(JMM)和鎖機(jī)制詳解

    這篇文章主要介紹了Java中的內(nèi)存模型(JMM)和鎖機(jī)制使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • Java將日期類型Date時(shí)間戳轉(zhuǎn)換為MongoDB的時(shí)間類型數(shù)據(jù)

    Java將日期類型Date時(shí)間戳轉(zhuǎn)換為MongoDB的時(shí)間類型數(shù)據(jù)

    今天小編就為大家分享一篇關(guān)于Java將日期類型Date時(shí)間戳轉(zhuǎn)換為MongoDB的時(shí)間類型數(shù)據(jù),小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • Java使用通配符實(shí)現(xiàn)增強(qiáng)泛型詳解

    Java使用通配符實(shí)現(xiàn)增強(qiáng)泛型詳解

    泛型是JAVA重要的特性,使用泛型編程,可以使代碼復(fù)用率提高。本文將利用通配符實(shí)現(xiàn)增強(qiáng)泛型,文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2022-08-08

最新評(píng)論

揭西县| 阜南县| 丹江口市| 哈巴河县| 崇礼县| 颍上县| 阳信县| 庆元县| 镇远县| 铁岭县| 太康县| 年辖:市辖区| 库尔勒市| 临颍县| 吉隆县| 萨迦县| 贺兰县| 城固县| 临邑县| 莆田市| 芜湖市| 岐山县| 会东县| 资中县| 临颍县| 贵南县| 大新县| 无棣县| 泽库县| 永新县| 峨边| 武宣县| 合山市| 榆树市| 西平县| 出国| 台中市| 佛山市| 大同县| 高州市| 昌黎县|