java中的集合

2021-08-08 11:23:38 字數 4717 閱讀 4605

1.1 collection介面

新增:

add(e e);

addall(collectionc)

刪除:

clear();//清空集合

remove(object o);//刪除乙個元素

removeall(collection> c);//刪除兩個集合的交集部分

retainall(collection> c);//刪除兩個集合沒有交集的部分

檢視:

size();
判斷:

contains(object o);

containsall(collection> c);

isempty();

迭代:

iterator();//迭代器

toarray();//把集合中的元素放在陣列中返回

迭代器使用注意事項:

在迭代器迭代元素過程中,不允許使用集合物件改變集合中的元素,如果要新增或者刪除只能使用迭代器的方法進行操作.

迭代器的使用示例:

list.add("張三");

list.add("李四");

iterator it = list.iterator;

while(it.hasnext())

1.2 list介面(繼承自collection介面)

1.2.1 list介面的方法

特點 : 有序(元素新增的順序與出來的順序一致),可重複

常用的實現list介面的類有:arraylist,linkedlist

新增:

add(int

index, e element);//新增元素到集合指定的索引位置

addall(int

index, collection extends e> c);//一次新增多個元素到集合中

獲取:

get(int index);//獲取指定索引的元素

indexof(object o);//獲取指定元素的索引

lastindexof(object o);//

sublist(int fromindex, int toindex);//獲取指定的起始位置和結束位置之間的元素

修改:

set(int index, e element);//e替換指定索引值位置的元素
迭代:

listiterator();
1.2.2 arraylist

arraylist 底層維護了乙個object陣列實現的

特點 : 查詢快,增刪慢

linklist使用鍊錶結構實現的

特點: 查詢速度慢, 增刪快

linklist特有的方法:

1.常用方法

addfirst(e e);//把元素新增到集合的首位

addlast(e e);

getfirst();//獲取到集合的首位元素

getlast();

removefirst();//刪除集合中的首位元素並返回

removelast();//刪除集合的末尾元素並返回

2 . 資料介面

//先進後出 堆疊

push();//將元素新增到集合的開頭處

pop();//移除並返回集合中的第乙個元素

//先進先出 佇列

offer();//把元素新增到集合的末尾處

poll();

1.3 set介面(繼承自collection介面)

特點: 無序, 不可重複

1.3.1 hashset

實現原理:

往hashset新增元素的時候,hashset會先呼叫元素的hashset方法得到元素的雜湊值,然後通過元素的雜湊值經過移位等運算,算出該元素在雜湊表中的儲存位置.如果算出該元素的儲存位置目前已經存在有其他的元素了,那麼會呼叫該元素的equals方法與該位置的元素再比較一次,如果equals返回的是true,那麼該元素與這個位置上的元素就視為是重複元素,不允許新增,如果equals方法返回的是false,那麼新增該元素。

1.3.2 treeset

實現原理:

1 往treeset新增元素的時候, 如果元素本身具備了自然順序的特性, 那麼就按照元素自然順序的特性進行排序儲存。

2 往treeset新增元素的時候, 如果元素本身不具備自然順序的特性, 那麼該元素所屬的類必須要實現comparable介面, 把元素的比較規則定義在compareto(t o)方法上。

3 如果比較元素的時候, compareto 方法返回的是0,那麼該元素就被視為重複元素,不允許新增。

4 往treeset新增元素的時候, 如果元素本身沒有具備自然順序的特性, 而元素所屬的類也沒有實現comparable介面, 那麼必須要在建立treeset的時候傳入乙個比較器.

如何定義比較器

class 類名 implements

comparator

}

2.1 map介面

實現map介面的集合類的特點 : 鍵不可重複, 值可以重複

常用的實現map介面類 : hashmap, treemap, tablemap

新增:

put(k key, v value);

putall(map

extends k,?extends v> m)

獲取:

get(object

key);

size();

判斷:

containskey(object key);//是否包含指定的鍵

containsvalue(object key);//是否包含指定的值

isempty();

刪除:

remove(object key);

clear();//清空集合中的所有元素

迭代:

keyset();

values();

entryset()

//得到的集合set中存放的是entry物件

2.2 hashmap

hashmap的儲存的原理:

往hashmap新增元素的時候, 會呼叫鍵的hashcode方法得到元素的雜湊碼值,然後通過雜湊碼值算出元素在雜湊表中的位置, 如果該位置沒有元素就直接新增,如果該位置有元素就會呼叫鍵的equals方法,返回false則該元素可以被儲存,true則不允許被儲存。

2.3 treemap

1 往treemap新增元素的時候, 如果元素key值本身具備了自然順序的特性, 那麼就按照key值自然順序的特性進行排序儲存。

2 往treemap新增元素的時候, 如果元素key值本身不具備自然順序的特性, 那麼該元素所屬的類必須要實現comparable介面, 把元素的比較規則定義在compareto(t o)方法上。

3 如果比較元素的時候, compareto 方法返回的是0,那麼該元素就被視為重複元素,不允許新增。

4 往treemap新增元素的時候, 如果元素key值本身沒有具備自然順序的特性, 而元素所屬的類也沒有實現comparable介面, 那麼必須要在建立treemap的時候傳入乙個比較器.

3.1 collections

常用方法(都是靜態方法):

1 對list集合進行排序。

sort(list);

sort(list, comaprator);

2 對list進行二分查詢

int binarysearch(list,key);

int binarysearch(list,key,comparator);

3 對集合取最大值或者最小值

max(collection);

max(collection, comparator);

min(collection),

min(collection, comparator);

4 對list集合進行反轉

3.2 arrays

常用方法(都是靜態方法):

1 複製

copyof(boolean original, int newlength);

copyofrange(boolean original, int from,int to)

2 比較兩個陣列是否相同

equals(int,int);

java中的集合

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

Java中的集合

有序的 允許重複的 arraylist實現類 基於陣列實現 remove語句,刪除成功則返回true,不成功則返回false 注 不要在迭代時進行刪除,否則會出錯,可以使用迭代器自身的remove方法,如上。linklist實現類 基於鍊錶實現 與arraylist區別 越靠近頭部的新增刪除,arr...

java中的集合

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