日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

java list 接口_Java 集合 List接口

發(fā)布時(shí)間:2023/12/15 java 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java list 接口_Java 集合 List接口 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

[TOC]

List接口

概述有序的 collection(也稱為序列)。此接口的用戶可以對(duì)列表中每個(gè)元素的插入位置進(jìn)行精確地控制。用戶可以根據(jù)元素的整數(shù)索引(在列表中的位置)訪問(wèn)元素,并搜索列表中的元素。

Collection將集合劃分為兩大類:List集合

Set集合

List接口的特點(diǎn)有序【存儲(chǔ)有序】

可重復(fù)

可以存儲(chǔ) null值

部分子集合線程安全,部分不安全 例如 ArrayList 和 Vector

有索引,針對(duì)每個(gè)元素能夠方便地查詢和修改

判斷元素是否重復(fù)依賴于equals方法

? a. 如果元素是系統(tǒng)類,不需要重寫equals方法

? b. 如果是自定義類,就需要我們按需求重寫 equals方法

List接口的常用方法

void add(int index, E element) 在指定 index 索引處理插入元素 element

boolean addAll(int index, Collection extends E> c) 在指定 index 索引處理插入集合元素 c

刪除

E remove(int index) 刪除指定索引 index 處的元素

修改

E set(int index, E element) 修改指定索引 index 處的元素為 element

遍歷

E get(int index) + int size() for循環(huán)遍歷集合中的每一個(gè)元素 ListIterator listIterator() 通過(guò)列表迭代器遍歷集合中的每一個(gè)元素 ListIterator listIterator(int index) 通過(guò)列表迭代器從指定索引處開(kāi)始正向或者逆向遍歷集合中的元素

獲取

E get(int index) 獲取指定索引處的元素 int indexOf(Object o) 從左往右查找,獲取指定元素在集合中的索引,如果元素不存在返回 -1 int lastIndexOf(Object o) 從右往左查找,獲取指定元素在集合中的索引,如果元素不存在返回 -1 List subList(int fromIndex, int toIndex) 截取從 fromIndex 開(kāi)始到 toIndex-1 處的元素

List接口的遍歷方式toArray

Iterator

foreach

普通for

ListIterator

List接口去除重復(fù)元素

? 方式一:創(chuàng)建一個(gè)新的集合去除重復(fù)元素再使用地址傳遞

? 方式二:在原集合的基礎(chǔ)上使用選擇排序思想去除重復(fù)元素

并發(fā)修改異常的處理

異常名稱:并發(fā)修改異常 java.util.ConcurrentModificationException

產(chǎn)生原因:在使用迭代器迭代的同時(shí)使用原集合對(duì)元素做了修改

解決辦法:使用 toArray 方法

使用 普通 for 遍歷

使用 ListIterator 遍歷集合并且使用 列表迭代器修改元素

Set

Set接口的特點(diǎn):

1.無(wú)序 【存儲(chǔ)無(wú)序】

2.唯一

3.可以存儲(chǔ)null值,但是null不能重復(fù)

ArrayList

概述List 接口的大小可變數(shù)組的實(shí)現(xiàn)。實(shí)現(xiàn)了所有可選列表操作,并允許包括 null 在內(nèi)的所有元素。除了實(shí)現(xiàn) List 接口外,此類還提供一些方法來(lái)操作內(nèi)部用來(lái)存儲(chǔ)列表的數(shù)組的大小。(此類大致上等同于 Vector類,除了此類是不同步的。)

特點(diǎn)底層數(shù)據(jù)結(jié)構(gòu)是數(shù)組

增加和刪除的效率低,查詢和修改的效率高

能夠存儲(chǔ) null 值

線程不安全,效率高 可以通過(guò) Collections.synchronizedList();變安全

有索引,能夠方便檢索

元素可重復(fù),我們自己可以通過(guò) 選擇排序去重復(fù)

不可以排序,但是可以通過(guò) Collections.sort();方法排序

注:ArrayList中常用的方法全部來(lái)自于 父類 Collection,List,Object.這里不再做詳細(xì)敘述。

Vector

概述Vector 類可以實(shí)現(xiàn)可增長(zhǎng)的對(duì)象數(shù)組。與數(shù)組一樣,它包含可以使用整數(shù)索引進(jìn)行訪問(wèn)的組件。但是,Vector 的大小可以根據(jù)需要增大或縮小,以適應(yīng)創(chuàng)建 Vector 后進(jìn)行添加或移除項(xiàng)的操作。

特點(diǎn)底層數(shù)據(jù)結(jié)構(gòu)是數(shù)組

有索引,能夠方便檢索

增加和刪除的效率低,查詢和修改的效率高

線程安全,效率低

能夠存儲(chǔ) null 值

元素可重復(fù)【我們自己可以通過(guò)選擇排序思想去除重復(fù)元素】

不可以排序,但是可以通過(guò) Collections.sort();方法排序

常用方法

增加

public synchronized void addElement(E obj) 添加元素 obj 到集合中 public synchronized void insertElementAt(E obj, int index) 在指定索引 index 處插入元素 obj

刪除

public synchronized void removeElementAt(int index) 移除指定索引 index 處的元素 public synchronized void removeAllElements() 移除所有元素

修改

public synchronized void setElementAt(E obj, int index) 修改指定索引 index 的元素為 obj

遍歷

public synchronized E elementAt(int index) + size() for循環(huán)遍歷集合中的所有元素 public synchronized Enumeration elements() 使用 Enumeration 迭代器遍歷集合中的元素

獲取

public synchronized E firstElement() 獲取集合中的第一個(gè)元素 public synchronized E lastElement() 獲取集合中的最后一個(gè)元素 public synchronized E elementAt(int index) 獲取指定索引 index 的元素

相關(guān)面試題

ArrayList和Vector的區(qū)別? 1) Vector的方法都是同步的(Synchronized),是線程安全的(thread-safe),而ArrayList的方法不是,由于線程的同步必然要影響性能,因此,ArrayList的性能比Vector好。

2) 當(dāng)Vector或ArrayList中的元素超過(guò)它的初始大小時(shí),Vector會(huì)將它的容量翻倍,而ArrayList只增加50%的大小,這樣,ArrayList就有利于節(jié)約內(nèi)存空間。

Stack

概述Stack 類表示后進(jìn)先出(LIFO)的對(duì)象堆棧。它通過(guò)五個(gè)操作對(duì)類 Vector 進(jìn)行了擴(kuò)展 ,允許將向量視為堆棧。它提供了通常的 push 和 pop 操作,以及取堆棧頂點(diǎn)的 peek 方法、測(cè)試堆棧是否為空的 empty 方法、在堆棧中查找項(xiàng)并確定到堆棧頂距離的 search 方法。

特點(diǎn)基于棧結(jié)構(gòu)的集合,先進(jìn)后出

Stack 類是 Vector類的子類,所以該類也是線程安全的,效率低,建議使用 Deque接口的實(shí)現(xiàn)類

常用方法

E push(E item) 將元素壓入棧底 E pop() 將元素從棧結(jié)構(gòu)中彈出,并作為此函數(shù)的值返回該對(duì)象,此方法會(huì)影響棧結(jié)構(gòu)的大小 E peek() 查看堆棧頂部的對(duì)象,但不從棧中移除它。 boolean empty() 測(cè)試棧是否為空。 int search(Object o) 返回對(duì)象在棧中的位置,以 1 為基數(shù)。

注:如果棧中元素為空,再嘗試彈棧,將會(huì)拋出 EmptyStackException 異常, 而不是 NoSuchElementException

Queue

概述在處理元素前用于保存元素的 collection。除了基本的 null 或 false,具體取決于操作)。插入操作的后一種形式是用于專門為有容量限制的 Queue 實(shí)現(xiàn)設(shè)計(jì)的;在大多數(shù)實(shí)現(xiàn)中,插入操作不會(huì)失敗。

特點(diǎn)該接口是隊(duì)列接口的根接口,先進(jìn)先出

該接口提供隊(duì)列相關(guān)兩種形式的方法,一種拋出異常(操作失敗時(shí)),另一種返回一個(gè)特殊值(null 或 false,具體取決于操作)。插入操作的后一種形式是用于專門為有容量限制的 Queue 實(shí)現(xiàn)設(shè)計(jì)的;在大多數(shù)實(shí)現(xiàn)中,插入操作不會(huì)失敗。

常用方法

| | 拋出異常 | 返回特殊值 | | ---- | --------- | ---------- | | 插入 | add(e) | offer(e) | | 移除 | remove() | poll() | | 檢查 | element() | peek() |

總結(jié)

以上是生活随笔為你收集整理的java list 接口_Java 集合 List接口的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。