Java中的集合

2021-07-16 05:59:19 字數 3718 閱讀 1151

有序的

允許重複的

arraylist實現類:基於陣列實現

remove語句,刪除成功則返回true,不成功則返回false

注:不要在迭代時進行刪除,否則會出錯,可以使用迭代器自身的remove方法,如上。

linklist實現類:基於鍊錶實現

與arraylist區別:越靠近頭部的新增刪除,arraylist越慢,越靠近尾部越快

在什麼位置新增內容對linklist幾乎執行速度都一樣

根據索引刪除,arraylist效率相對較高,但當刪除內容在頭部是,link快得多

根據元素刪除,arraylist刪除快

普通for迴圈,遍歷效率arraylist比linklist快得多

foreach迴圈遍歷,兩者差不多

vector也是list子類,基於陣列實現

執行緒安全,arraylist執行緒不安全,其他兩者無區別

queue佇列,arrayqueue

poll方法 返回第乙個值且從佇列中刪除

peek方法 返回第乙個值但不刪除

stack棧

push方法,壓棧,與add相同

peek 返回最後乙個值不刪除

pop 返回最後乙個的值且刪除

list的幾種迭代方式

//普通for迴圈

for (int i = 0

; i < list.size(); i++)

system.out

.println();

//增強for迴圈

for (entry s : list)

system.out

.println();

//迭代器

iteratoriterator = list.iterator();

while (iterator.hasnext())

system.out

.println();

以後的迭代方法, 如果已經有了方法了就用::符號

list.foreach(system.out::print);

system.out

.println();

//常見的lambda語法

list.foreach(s -> system.out

.print(s + " "));

list中的選擇性刪除的方式

//把list中所有的不能被3整除的刪掉, 需要有個中間的集合來儲存要刪除的元素

arraylistremoves = new arraylist<>();

for (entry entry : list)

}list.removeall(removes);

// lambda表示式

-> e.getindex() % 3 != 0);

list和陣列

都是儲存相同資料型別的元素

但是list的長度是可變的, 陣列的元素是不可變的

棧和佇列

//佇列

queue

<

integer

>

queue

=new arraydeque<>();

queue

.add(1);

system.out.println(queue

.poll());

system.out.println("佇列的size是: "

+queue

.size());

system.out.println("***********************************===");

stack

<

integer

>

stack

=new

stack

<>();

stack

.push(59);;

system.out.println(stack

.pop());

無序的

不允許重複(新增順序和儲存順序)

只能使用迭代器或者增強for迴圈進行遍歷

如何判斷是相同元素:

首先判斷hashcode是否一樣

如果一樣, 比較equals方法, 如果也返回true, 則視為相同

如何存的?

(樹形結構 -> 二叉樹 -> 紅黑樹)

如何判斷是否相同?

讓比較物件 實現comparable介面(一勞永逸的解決方案)

給treeset物件傳入乙個實現comparator的物件(更加靈活)注意: 如果兩者都實現了, 依第2種方式為準

collection: 父介面:

set: 介面-實現類: hashset, linkedhashset

list: 介面-實現類: linkedlist, vector, arraylist

sortedset: 介面-實現類: treeset

map介面-實現類: hashmap, hashtable, linkedhastmap, properties

1, list:有序列表, 允許存放重複的元素

實現類 :

arraylist:陣列實現,查詢快,增刪慢,執行緒不安全,輕量級;

linkedlist:鍊錶實現,增刪快,查詢慢

vector:陣列實現,執行緒安全,重量級

2, set:

無序集合,不允許存放重複的元素;允許使用null元素

hashset 的後台有乙個hashmap;初始化後台容量;只不過生成乙個hashset的話,系統只提供key的訪問; 如果有兩個key重複,那麼會覆蓋之前的;

實現類 hashset:equals返回true,hashcode返回相同的整數;雜湊表;儲存的資料是無序的。

3、map

hashmap:鍵值對,key不能重複,但是value可以重複;key的實現就是hashset;value對應著放;允許null的鍵或值;

hashtable:執行緒安全的,不允許null的鍵或值;

properties::key和value都是string型別,用來讀配置檔案;

treemap:對key排好序的map; key 就是treeset, value對應每個key; key要實現comparable介面或treemap有自己的構造器;

4、兩個工具類 arrays 和 collections

1.arrays、此類包含用來運算元組(比如排序和搜尋)的各種方法。

2.collections、主要提供了在 collection 上進行操作的靜態方法(同步集合類方法) 。

java中的集合

set hashset無序不重複,底層資料結構是雜湊表,執行緒非同步,保證元素唯一性原理是判斷hashcode值是否相同 位址相同 如果相同還會繼續判斷equals方法是否為true 是否是同乙個物件 treeset字典序不重複,底層資料是二叉樹,保證元素唯一性原理是compareto方法retur...

java中的集合

1.1 collection介面 新增 add e e addall collectionc 刪除 clear 清空集合 remove object o 刪除乙個元素 removeall collection c 刪除兩個集合的交集部分 retainall collection c 刪除兩個集合沒有...

java中的集合

合集主要包括 collection 和 map.它們都實現了iterator,這是乙個遍歷集合中元素的介面.collection主要包括list 和 set.list arraylist,linkedlist set hashset,treeset 用二叉排序樹 list 有序,可重複.set 無序...