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 無序...