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

Javat集合之Lis---(ArrayList和LinkedList)

這篇具有很好參考價值的文章主要介紹了Javat集合之Lis---(ArrayList和LinkedList)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


提示:以下是本篇文章正文內(nèi)容,下面案例可供參考

一、 List概述

1.1概念

List是一種常用的集合類型,它可以存儲任意類型的對象,也可以結(jié)合泛型來存儲具體的類型對象,本質(zhì)上就是一個容器。

1.2list體系結(jié)構圖

Javat集合之Lis---(ArrayList和LinkedList),集合,windows

1.3 通用方法

ArrayList和LinkedList通用方法:
Javat集合之Lis---(ArrayList和LinkedList),集合,windows
以上方法通用且常用的方法其他方法可參考相關的文檔進行查詢即可,

測試代碼

以List的實現(xiàn)類ArrayList:

public static void main(String[] args) {
		// TODO Auto-generated method stub
		// 創(chuàng)建集合
		List list = new ArrayList<>();

		// 添加元素
		list.add("hello");
		list.add("world");
		list.add("java");

		// public boolean remove(Object o):刪除指定的元素,返回刪除是否成功
		 System.out.println(list.remove("world"));//true
		 System.out.println(list.remove("javaee"));//false

		// public E remove(int index):刪除指定索引處的元素,返回被刪除的元素
		 System.out.println(list.remove(1));//world

		// IndexOutOfBoundsException
		 System.out.println(list.remove(3));

		// public E set(int index,E element):修改指定索引處的元素,返回被修改的元素
		 System.out.println(list.set(1,"javaee"));//world

		// IndexOutOfBoundsException
		 System.out.println(list.set(3,"javaee"));

		// public E get(int index):返回指定索引處的元素
		 System.out.println(list.get(0));//hello
		 System.out.println(list.get(1));//world
		 System.out.println(list.get(2));//java
		// IndexOutOfBoundsException
		 System.out.println(list.get(3));

		// public int size():返回集合中的元素的個數(shù)
		 System.out.println(list.size());//3
		
		// 輸出集合
		 System.out.println("list:" + list);//list:[hello, world, java]

		// boolean contains(Object o) 如果此列表包含指定的元素,則返回 true
		 System.out.println(list.contains("world"));//true
		 
		// boolean addAll(int index, Collection c) 
		//將指定集合中的所有元素插入到此列表中,從指定的位置開始
		List list2 = new ArrayList<>();
		//addall前l(fā)ist2
		System.out.println(list2);// []
		System.out.println(list2.addAll(0, list));// true
		//addall后list2
		System.out.println(list2);// [hello, world, java]
	}

二、List的特點

(1)有序性:List中的元素是按照添加順序進行存放的。因為有序,所以有下標,下標從0開始

(2)可重復性: List中可以存儲重復的元素

三、遍歷方式

利用三種方式進遍歷list

foreach

       List list = new ArrayList<>();

        //添加元素
        list.add("hello");
        list.add("world");
        list.add("java");
        for (Object object : list) {
			System.out.println(object);
		}
		

for循環(huán)

根據(jù)下標進行遍歷、

       //創(chuàng)建集合
       List list = new ArrayList<>();

        //添加元素
        list.add("hello");
        list.add("world");
        list.add("java");
       for (int i = 0; i < list.size(); i++) {
		System.out.println(list.get(i));
	}


迭代器

        //創(chuàng)建集合
       List list = new ArrayList<>();

        //添加元素
        list.add("hello");
        list.add("world");
        list.add("java");
        Iterator iterator = list.iterator();
        while (iterator.hasNext()) {
        	System.out.println(iterator.next());
		}


四、ArrayList

ArrayList概述

概念

ArrayList是Java中的一個類,實現(xiàn)了List接口,底層使用數(shù)組來存儲元素。與數(shù)組相比,它具有更靈活的大小和動態(tài)的增加和刪除元素。

數(shù)據(jù)結(jié)構

ArrayList的數(shù)據(jù)結(jié)構本質(zhì)上就是數(shù)組。區(qū)別在于,數(shù)組是一種靜態(tài)的數(shù)據(jù)結(jié)構,需要在創(chuàng)建數(shù)組時就指定它的長度,并且創(chuàng)建后長度無法改變。而ArrayList是一種動態(tài)的數(shù)據(jù)結(jié)構,它可以自動進行擴容。

ArrayList的底層數(shù)據(jù)結(jié)構:

Javat集合之Lis---(ArrayList和LinkedList),集合,windows

ArrayList的特點

除了具備List有序性、可重復性特點外,ArrayList還具備以下的特點:

1.自動擴容
當向ArrayList中加入的元素超過了其默認的長度時(由于ArrayList是數(shù)組的封裝類,在創(chuàng)建ArrayList時不用給定長度,其默認長度為10),它會自動擴容以增加存儲容量

2.隨機訪問
隨機訪問是指可以直接訪問元素,而不需要從頭部或者尾部遍歷整個列表。由于ArrayList底層是用數(shù)組實現(xiàn)的,因此可以通過索引來快速訪問元素。

3.慢速插入/刪除:
相比于鏈表(如LinkedList),ArrayList在中間插入或刪除元素較慢,因為需要移動元素。

4.高效的遍歷
由于ArrayList底層采用了數(shù)組來存儲元素,所以對于ArrayList的遍歷操作比較高效。

常用方法:
Javat集合之Lis---(ArrayList和LinkedList),集合,windows

ArrayList去重

字符串去重

使用contains方法

	   public static void main(String[] args) {
	        List list = new ArrayList();
	        list.add("a");
	        list.add("b");
	        list.add("c");
	        System.out.println("目前集合容器中的元素:"+list);//目前集合容器中的元素:[a, b, c]
	        if (!list.contains("b")){//如果不包含“b”
	            list.add("b");//才增加
	        }
	        System.out.println("目前集合容器中的元素:"+list);//目前集合容器中的元素:[a, b, c]
	    }
}

對象去重

    public static void main(String[] args) {
        List list = new ArrayList();
        list.add(new Student("zs",16));
        list.add(new Student("ls",17));
        list.add(new Student("ww",18));
        System.out.println("目前集合容器中的元素:"+list);
        //目前集合容器中的元素:[com.xqx.demo.Student@33909752, com.xqx.demo.Student@55f96302, com.xqx.demo.Student@3d4eac69]
        if (!list.contains(new Student("ls",17))){//不包含才新增
            list.add(new Student("ls",17));
        }
        System.out.println("目前集合容器中的元素:"+list);
        //目前集合容器中的元素:[com.xqx.demo.Student@33909752, com.xqx.demo.Student@55f96302, com.xqx.demo.Student@3d4eac69, com.xqx.demo.Student@42a57993]

        if (list.contains(new Student("ls",17))){//包含才移除
            list.remove(new Student("ls",17));
        }
        System.out.println("目前集合容器中的元素:"+list);
        //目前集合容器中的元素:[com.xqx.demo.Student@33909752, com.xqx.demo.Student@55f96302, com.xqx.demo.Student@3d4eac69, com.xqx.demo.Student@42a57993]

    }
}
class Student{
    private String name;
    private int age;

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }


五、LinkedList

LinkedList概述

概念

LinkedList也是Java中的一個常用的集合類,實現(xiàn)了List接口,底層使用的是雙向鏈表數(shù)據(jù)結(jié)構。

與ArrayList不同,LinkedList在內(nèi)部存儲元素時,不是使用連續(xù)的內(nèi)存空間,而是使用一個鏈表來存儲元素。

數(shù)據(jù)結(jié)構

LinkedList底層采用的是雙向鏈表(doubly linked list) 數(shù)據(jù)結(jié)構。鏈表中的每個節(jié)點(結(jié)點)都由兩個部分組成,一部分是存儲數(shù)據(jù)元素的值域,另一部分是指向前一個節(jié)點和后一個節(jié)點的指針(引用)。對于雙向鏈表來說,除了一個指向前一個節(jié)點的指針外,還有一個指向后一個節(jié)點的指針

LinkedList的特點

隨機訪問性能較差:
LinkedList的隨機訪問性能較差,因為在鏈表中要從頭開始遍歷鏈表,直到找到目標元素。所以如果在代碼中需要頻繁進行隨機訪問元素的操作,LinkedList可能不是一個最佳的選擇。

添加/刪除操作快:
由于LinkedList底層使用雙向鏈表,因此它的添加和刪除操作非常快,因為只需要更改指針的指向即可,不需要像ArrayList一樣重新分配數(shù)組空間,而且LinkedList還支持在指定位置插入和刪除元素。

需要額外空間:
鏈表中每個節(jié)點都需要額外存儲到前一個和后一個節(jié)點的指針,因此比數(shù)組等其他數(shù)據(jù)結(jié)構需要更多的內(nèi)存空間。

適用于隊列和雙端隊列:
LinkedList還可以支持隊列和雙端隊列的功能,如在鏈表頭部或尾部添加或刪除元素,實現(xiàn)隊列和雙端隊列的常見操作。

雙端隊列(Deque,即Double Ended Queue的縮寫)是一種允許在隊列的兩端進行插入和刪除操作的數(shù)據(jù)結(jié)構。雙端隊列可以從隊列的頭部和尾部添加和移除元素

常用方法

Javat集合之Lis---(ArrayList和LinkedList),集合,windows

ArrayList和LinkedList的比較

1、由于ArrayList的數(shù)據(jù)結(jié)構為數(shù)組,所以查詢修改快,新增刪除慢;而LinkedList的數(shù)據(jù)結(jié)構為鏈表

結(jié)構,所以查詢修改慢,新增刪除快

2、ArrayList是基于數(shù)組實現(xiàn)的動態(tài)數(shù)組,在內(nèi)存中有連續(xù)的空間,可以通過下標訪問元素,由于數(shù)組需要提前分配一定大小的空間,因此當元素數(shù)量增多之后,可能會導致數(shù)組空間不足需要重新分配數(shù)組,這種情況下可能會出現(xiàn)內(nèi)存空間浪費;相比之下,LinkedList是基于鏈表實現(xiàn)的,每個元素都有一個引用指向下一個元素,不需要提前分配空間,因此能夠更加靈活地插入和刪除元素。然而,鏈表在內(nèi)存中是不連續(xù)的,每個元素的引用占用額外的內(nèi)存空間。由于鏈表中每個元素都需要有一個指向下一個元素的引用,因此在存儲同樣數(shù)量的元素時,LinkedList通常會占用比ArrayList更大的內(nèi)存空間。

好啦,今天的分享就到此為止!希望你看完本篇文章有所收獲,祝你變得更強??!!文章來源地址http://www.zghlxwxcb.cn/news/detail-821340.html

到了這里,關于Javat集合之Lis---(ArrayList和LinkedList)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領支付寶紅包贊助服務器費用

相關文章

  • 【List】List集合有序測試案例:ArrayList,LinkedList,Vector(123)

    List是有序、可重復的容器。 有序: List中每個元素都有索引標記??梢愿鶕?jù)元素的索引標記(在List中的位置)訪問 元素,從而精確控制這些元素。 可重復: List允許加入重復的元素。更確切地講,List通常允許滿足 e1.equals(e2) 的元素重復加入容器。 List接口常用的實現(xiàn)類有3個:

    2024年02月11日
    瀏覽(19)
  • 【JAVA學習筆記】53 - 集合-List類及其子類Collection、ArrayList、LinkedList類

    【JAVA學習筆記】53 - 集合-List類及其子類Collection、ArrayList、LinkedList類

    https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter14/src/com/yinhai/collection_ https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter14/src/com/yinhai/list_ 目錄 項目代碼 集合 一、引入 數(shù)組 集合 二、集合的框架體系 單列集合? ? ? ? 雙列集合? ? ? ? Collection類 一、Collection類接

    2024年02月06日
    瀏覽(31)
  • ArrayList 與 LinkedList 區(qū)別

    serialVersionUID 有什么作用? serialVersionUID 是 Java 序列化機制中的一個重要概念,它用于確保反序列化對象與序列化對象保持兼容。當一個類實現(xiàn) java.io.Serializable 接口時,可以通過定義一個名為 serialVersionUID 的靜態(tài)常量來指定該類的序列化版本。 serialVersionUID 的作用主要有以下

    2024年02月22日
    瀏覽(22)
  • LinkedList和ArrayList

    LinkedList和ArrayList都是Java中的List接口的實現(xiàn) 內(nèi)部數(shù)據(jù)結(jié)構 : ????????ArrayList是基于動態(tài)數(shù)組實現(xiàn)的,它支持快速的隨機訪問,也就是說,獲取指定索引位置的元素非??欤瑫r間復雜度為O(1)。 ????????LinkedList是基于雙向鏈表實現(xiàn)的,它支持快速的插入和刪除操作,特

    2024年02月02日
    瀏覽(24)
  • ArrayList和LinkedList

    ArrayList和LinkedList

    目錄 ArrayList 1.ArrayList簡介 2.ArrayList使用 2.1ArrayList的構造? ?2.2ArrayList常見操作 2.3ArrayList的遍歷 2.4ArrayList的擴容機制 3.ArrayList的具體使用 4.ArrayList的問題 5.ArrayList的缺陷 LinkedList 1.LinkedList的模擬實現(xiàn) 2.LinkedList的使用 2.1什么是LinkedList 2.2LinkedList的使用 ArrayList和LinkedList的區(qū)別

    2023年04月18日
    瀏覽(19)
  • ArrayList & LinkedList

    ArrayList和LinkedList都是Java集合框架中的實現(xiàn)類,用于存儲和操作數(shù)據(jù)。它們在底層實現(xiàn)和性能特點上有一些區(qū)別。 數(shù)據(jù)結(jié)構 :ArrayList底層使用數(shù)組實現(xiàn),而LinkedList底層使用雙向鏈表實現(xiàn)。這導致它們在內(nèi)存結(jié)構和數(shù)據(jù)存儲方式上有所不同。 隨機訪問性能 :ArrayList支持快速的

    2024年02月10日
    瀏覽(18)
  • ArrayList和LinkedList的區(qū)別

    ArrayList和Vector使用了數(shù)組的實現(xiàn),可以認為ArrayList或者Vector封裝了對內(nèi)部數(shù)組的操作,比如向數(shù)組中添加,刪除,插入新的元素或者數(shù)據(jù)的擴展和重定向。 LinkedList使用了循環(huán)雙向鏈表數(shù)據(jù)結(jié)構。與基于數(shù)組ArrayList相比,這是兩種截然不同的實現(xiàn)技術,這也決定了它們將適用

    2024年02月08日
    瀏覽(24)
  • 談談ArrayList和LinkedList的區(qū)別

    談談ArrayList和LinkedList的區(qū)別

    目錄 一、什么是數(shù)組 二、ArrayList 三、LinkedList 四、ArrayList和LinkedList的區(qū)別 在編程中,數(shù)組(Array)是一種用于存儲多個相同類型數(shù)據(jù)元素的數(shù)據(jù)結(jié)構。它是一個有序的集合,其中每個元素都有一個唯一的索引(下標),用于訪問和操作數(shù)組中的元素。 數(shù)組通常用于存儲數(shù)據(jù)

    2024年01月21日
    瀏覽(23)
  • ArrayList 和 LinkedList 有什么區(qū)別

    ArrayList 和 LinkedList 是Java中的兩種常見的集合類型,它們具有一些相似之處,但也存在一些重要的區(qū)別。 ArrayList ArrayList 是數(shù)組列表類型,它是通過一個可變大小的數(shù)組來實現(xiàn)的。這意味著 ArrayList 支持隨機訪問元素,因為每個元素都可以通過索引來訪問,而且訪問速度很快。

    2024年02月05日
    瀏覽(18)
  • Java鏈式存儲LinkedList----與ArrayList比較

    Java鏈式存儲LinkedList----與ArrayList比較

    作為一名對技術充滿熱情的學習者,我一直以來都深刻地體會到知識的廣度和深度。在這個不斷演變的數(shù)字時代,我遠非專家,而是一位不斷追求進步的旅行者。通過這篇博客,我想分享我在某個領域的學習經(jīng)驗,與大家共同探討、共同成長。請大家以開放的心態(tài)閱讀,相信

    2024年01月23日
    瀏覽(21)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領取紅包

二維碼2

領紅包