第六篇
複習:一、集合概念:是乙個用於儲存多個物件的容器(物件).容器內的物件就是元素,元素都是引用型別。
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...