集合容器因為內部的資料結構不同,有多種具體容器。
不斷的向上抽取,就形成了集合框架。
框架的頂層collection介面:
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(collection coll);
boolean isempty();判斷是否有元素。
4.獲取:
int size();
iterator iterator();//迭代器,專門用於取出集合中的元素。
5.其他:
boolean retainall(collection coll);取交集。
object toarray();將集合轉為陣列。
collection介面有兩個子介面:
list(列表) , set(集)
list:可存放重複元素,元素訪問是有序的。元素都有索引(角標)
set:不可以存放重複元素,元素訪問是無序
的。list特有的常見方法:有乙個共性的特徵就是可以操作角標
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替代。
arraylist:執行緒不安全,查詢速度快。
linkedlist:鍊錶結構,增刪速度快。
取出list集合中元素的方式:
• get(int index):通過腳標獲取元素。
• iterator():通過迭代方法獲取迭代器物件。
迭代:
迭代是取出集合中元素的一種方式。
因為collection中有iterator方法,所以每乙個
子類集合物件都具備迭代器。
用法:
iterator iter = l.iterator();
while(iter.hasnext())
for(iterator iter = iterator();iter.hasnext(); )
迭代的注意事項:
迭代器在collcection介面中是通用的,它替
代了vector類中的enumeration(列舉)。
迭代器的next方法是自動向下取元素,要避
免出現nosuchelementexception。
迭代器的next方法返回值型別是object,所
以要記得型別轉換。
思考:為什麼next方法的返回型別是object的
呢?set介面中常用的類:
hashset:執行緒不安全,訪問速度快。
它是如何保證元素唯一性的呢?
treeset: 執行緒不安全,可以對set集合中的
元素進行排序。
它的排序是如何進行的呢?
set集合元素唯一性原因
hashset:通過equals方法和hashcode
方法來保證元素的唯一性。
treeset:通過compareto或者compare
方法中的來保證元素的唯一
性。元素是以二叉樹的形式存
放的。map與collection
map與collection在集合框架中屬並列存在
map儲存的是鍵值對
map儲存元素使用put方法, collection使用
add方法
map集合沒有直接取出元素的方法,而是
先轉成set集合,在通過迭代獲取元素
map集合中鍵要保證唯一性
map集合常用類
hashtable:執行緒安全,速度慢,不允許存放
null鍵, null值,已被hashmap替代。
hashmap:執行緒不安全,速度快,允許存放null
鍵, null值。
treemap:對鍵進行排序,排序原理與treeset
相同。
例程 練習:自定義乙個可以同時存放三元素的map集
合。集合框架中的工具類
collections
• 對集合進行查詢
• 取出集合中的最大值,最小值
• 對list集合進行排序
• ……
arrays
• 將陣列轉成list集合
• 對陣列進行排序
• 對陣列進行二分查詢
新增for語句
collection在jdk1.5後出現的父介面
iterable就是提供了這個for語句。
格式:
for(資料型別 變數名 : 陣列或集合)
簡化了對陣列,集合的遍歷。
函式的另一種表現形式
返回值型別 函式名(引數型別… 形式引數)
其實接收的是乙個陣列,可以指定實際引數
個數。
java基礎之集合
1.collectiton 單列儲存集合 list 元素是有序的,元素可以重複。因為該集合體系有索引 arraylist 底層的資料結構使用的是陣列結構 特點 陣列元素查詢很快,但是增刪很慢,因為增刪乙個元素,陣列後面的其他元素都需要變動,執行緒不同步 linklist 底層的資料結構使用的是鍊錶資...
java基礎之集合
集合的型別與各自的特性 collection 單列集合 list 有儲存順序,可重複 arraylist 陣列實現,查詢快,增刪慢由於是陣列實現,在增和刪的時候會牽扯到陣列增容,以及拷貝元素,所以慢。陣列是可以直接按索引查詢,所以查詢時較快。linkedlist 鍊錶實現,增刪快,查詢慢由於鍊錶實現...
Java基礎之集合
list 和set 都是conllection 介面的子介面。list 中的元素是有順序的,可以重複的。set中的額元素是沒有順序的,不可以重複的.set是通過hashcode 和equals 比較元素是否重複的。先使用hashcode 方法判斷已經存在 hashset 中元素的 hashcode ...