物件用於封裝特有資料,物件多了需要儲存,如果物件的個數不確定。就使用集合容器進行儲存。
1,用於儲存物件的容器。
2,集合的長度是可變的。
3,集合中不可以儲存基本資料型別值。
集合容器因為內部的資料結構不同,有多種具體容器。
不斷的向上抽取,就形成了集合框架。
框架的頂層collection介面:
1,新增。
boolean add(object obj):
boolean addall(collection coll):
2,刪除。
boolean remove(object obj):
boolean removeall(collection coll);
void clear();
3,判斷:
boolean contains(object obj):
boolean containsall(colllection coll);
boolean isempty():判斷集合中是否有元素。
4,獲取:
int size():
iterator iterator():取出元素的方式:迭代器。
該物件必須依賴於具體容器,因為每乙個容器的資料結構都不同。
所以該迭代器物件是在容器中進行內部實現的。
對於使用容器者而言,具體的實現不重要,只要通過容器獲取到該實現的迭代器的物件即可,也就是iterator方法。
iterator介面就是對所有的collection容器進行元素取出的公共介面。
其實就是抓娃娃遊戲機中的夾子!
5,其他:
boolean retainall(collection coll);取交集。
object toarray():將集合轉成陣列。
|--list:有序(存入和取出的順序一致),元素都有索引(角標),元素可以重複。
|--set:元素不能重複,無序。
1,新增
void add(index,element);
void add(index,collection);
2,刪除;
object remove(index):
3,修改:
object set(index,element);
4,獲取:
object get(index);
int indexof(object);
int lastindexof(object);
list sublist(from,to);
list集合是可以完成對元素的增刪改查。
|--vector:內部是陣列資料結構,是同步的。增刪,查詢都很慢!
|--arraylist:內部是陣列資料結構,是不同步的。替代了vector。查詢的速度快。
|--linkedlist:內部是鍊錶資料結構,是不同步的。增刪元素的速度很快。
addfirst();
addlast():
jdk1.6
offerfirst();
offetlast();
getfirst();.//獲取但不移除,如果鍊錶為空,丟擲nosuchelementexception.
getlast();
jdk1.6
peekfirst();//獲取但不移除,如果鍊錶為空,返回null.
peeklast():
removefirst();//獲取並移除,如果鍊錶為空,丟擲nosuchelementexception.
removelast();
jdk1.6
pollfirst();//獲取並移除,如果鍊錶為空,返回null.
polllast();
set介面中的方法和collection一致。
如何保證該集合的元素唯一性呢?
是通過物件的hashcode和equals方法來完成物件唯一性的。
如果物件的hashcode值不同,那麼不用判斷equals方法,就直接儲存到雜湊表中。
如果物件的hashcode值相同,那麼要再次判斷物件的equals方法是否為true。
如果為true,視為相同元素,不存。如果為false,那麼視為不同元素,就進行儲存。
記住:如果元素要儲存到hashset集合中,必須覆蓋hashcode方法和equals方法。
一般情況下,如果定義的類會產生很多物件,比如人,學生,書,通常都需要覆蓋equals,hashcode方法。
建立物件判斷是否相同的依據。
判斷元素唯一性的方式:就是根據比較方法的返回結果是否是0,是0,就是相同元素,不存。
treeset對元素進行排序的方式一:
讓元素自身具備比較功能,元就需要實現comparable介面。覆蓋compareto方法。
如果不要按照物件中具備的自然順序進行排序。如果物件中不具備自然順序。怎麼辦?
可以使用treeset集合第二種排序方式二:
讓集合自身具備比較功能,定義乙個類實現comparator介面,覆蓋compare方法。
將該類物件作為引數傳遞給treeset集合的建構函式。
if(this.hashcode()== obj.hashcode() && this.equals(obj))
1,判斷的是兩個元素的雜湊值是否相同。
如果相同,在判斷兩個物件的內容是否相同。
2,判斷雜湊值相同,其實判斷的是物件的hashcode的方法。判斷內容相同,用的是equals方法。
注意:如果雜湊值不同,是不需要判斷equals。
Java集合常用類特點
集合的結構如下圖所示 集合的兩個頂級介面分別為 collection和map collection下有兩個比較常用的介面分別是list 列表 和set 集 其中list可以儲存重複元素,元素是有序的 訪問順序一致 可以通過list腳標來獲取指定元素 而set不可以有重複元素,元素是無序的。list介...
集合的特點
1。set集合概述和特點 總結 set集合的特點 不允許儲存重複的元素 沒有索引 set集合的基本使用 new hashset 2.雜湊值 總結 雜湊值簡介 用於計算儲存元素的位置的.提高儲存元素和取出元素的效率的 如何獲取雜湊值 hashcode 雜湊值的特點 同乙個物件的雜湊值是一樣的 預設情況...
集合的特點
集合的特點 有的可變,有的不可變 元素無次序,不可重複。集合中的元素不能重複,可作為一種簡單高效的元素去重方式。集合沒有索引,它的元素無次序,不是序列。利用set 和 建立集合時,要求集合中的元素必須是可雜湊 hsshable 的,即在利用set 和 建立集合的時候,集合中的元素必須是不可變的。利用...