集合的子介面

2021-08-25 08:57:21 字數 2906 閱讀 8608

第六篇

複習:一、集合概念:是乙個用於儲存多個物件的容器(物件).容器內的物件就是元素,元素都是引用型別。

ps:容器內儲存的都是物件的位址。

二、與陣列的區別?

相同點:都是容器(資料結構),用來儲存多個資料的,

不同點:陣列:可以儲存基本資料型別

集合:只能儲存引用資料型別

三、集合框架中包含多種介面,抽象類,實現類等,用此來滿足我們所需要的用於儲存資料的資料結構。 

四、collection與collections的區別

collection:是集合的父介面,定義了集合框架中常用的抽象方法

collections:是集合的工具類,定義了很多用於操作集合物件的工廠/工具方法

五、子介面:list,set,queue

list:儲存此介面實現類的資料,有序,可重複。

有序:儲存時與新增的順序相關。有對應的索引/下標標記位置。從0開始

重複:儲存的元素可以是同乙個,也可以是物件內容相同不同物件根據元素的equals方法進行判斷

常用方法(序)  

e set(int index,e newelement)

使用新元素newelement替換下標index上的元素,返回原元素。

boolean remove(int index):

移除此集合中下標為index上的元素  

listsublist(int fromindex,int endindex):

擷取此集合中的一部分,即擷取子集,從fromindex到endindex包前不包後

ps:此方法在堆中不會產生新的集合物件。

變數引用的父集的一部分。修改子集,會影響父集        

int lastindexof(object obj):

返回此集合指定元素obj最後一次出現的下標。找不到返回-1.              

六、陣列與集合之間的轉換

1、集合轉陣列

object toarray()

e  toarray(e e);

2、陣列轉集合

list arrays.aslist(陣列引數);

注意:陣列轉成的集合,不能進行增刪操作,否則會出現執行時異常.可以進行替換操作,但是會陣列變數有影響。

如果想要成功進行增刪操作,可以將元素,存入新的集合中。

七、iterator:迭代器介面

(1)迭代器的作用使用用來遍歷集合元素。是乙個介面。collection介面提供乙個方法 iterator iterator()

(2)collection的實現類使用內部類定義了迭代器子類。

(3)迭代器提供了統一的方法,用於遍歷集合元素。

常用方法:

boolean hasnext():判斷集合中是否有下乙個元素

e next():取出集合中的下乙個元素  

void remove():在使用迭代器對集合進行遍歷時,不能使用集合的移除方法移除集合的元素。必須使用迭代器自己提供的移除才行。

增強for迴圈-foreach迴圈

for(元素型別 變數名:要遍歷的集合或者陣列)

與經典for迴圈的區別:

(1)增強for迴圈中無法使用下標。

(2)經典for迴圈中可以使用下標。跟下標有關的邏輯,隨便寫。

八、list的三個實現類:

(1)arraylist底層是基於動態陣列的資料結構。是有存放順序的。          

(2)linkedlist底層是基於雙鏈表的資料結構。每乙個儲存單元,都涉及到其他兩個引用。

優缺點: 在執行get()/set()時,arraylist的效率高,linkedlist需要移動指標,效率低

在增加/刪除操作時,linkedlist效率高,arraylist效率低(需要擴容,移動元素)

ps:當然,在元素的數量大的情況下,區別才明顯

(3)vector:是乙個比較古老的集合型別,執行緒安全,但是效率特別低。雖然安全,也不建議使用。

九、介面queue

queue也是collection的子介面,是一種資料結構,佇列。

佇列:通常都是一端進(offer),另一端出(poll)。

進出原則:fifo

因為佇列要經常進行增刪操作,所以使用linkedlist實現了queue介面. 

常用方法:

boolean offer(e e):元素從隊尾進入佇列。

e poll():從隊首移除元素,返回被移除的元素。當佇列沒有元素時返回null.

e peek(): 檢視隊首元素,不移除。佇列中沒有元素時,返回null.       

注意: 為了避免移除佇列的隊首時出現null,我們最好先檢視隊首是不是null.

deque:是乙個queue的子介面,實現的是雙端佇列的資料結構。

雙端佇列:兩端都可以進,也都可以出。 

e offerfirst();

e offerlast();

e pollfirst();

e polllast();

e peekfirst();

e peeklast();

棧的資料結構:先進後出:filo

我們可以將雙端佇列的一端進行禁止操作。另一端進或出,即stack               

void push(e e):將元素 e推進棧中

e pop():將棧中的最頂端的元素,移除。

string arr1=;

//將陣列轉換成集合

listlist=arrays.aslist(arr1);

crtl+f查詢

shift+alt +s快捷鍵

JAVA 集合的子介面List

list 列表 此介面對應的實現類的特點都是 有序的,可以重複的 重複與否與元素的equals方法有關 常用方法 void add int index,e element 將某一元素,插入到此集合的某一下標index處 e get int index 返回指定下標上的元素 int indexof o...

Set集合介面

set介面 set集合就像是乙個罐子,一旦把物件 丟進去 多個物件之間就沒有順序,set元素不可以重複 set判斷兩個物件是否相同不是使用 而是使用equals set t new hashset t.add aa t.add new string aa system.out.println t.a...

集合 List介面

有序的 collection 也稱為序列 此介面的使用者可以對列表中每個元素的插入位置進行精確地控制。使用者可以根據元素的整數索引 在列表中的位置 訪問元素,並搜尋列表中的元素 與 set 不同,列表通常允許重複的元素 void add int index,e element e remove in...