集合 集合介紹: 由於數組中存放對象,對對象操作起來不方便。java中有一類容器,專門用來存儲對象。 集合與數組的區別: 1.數組的長度固定的,而集合長度時可變的 2.數組只能儲存同一類型的元素,而且能存基本數據類型和引用數據類型。集合可以存儲不同類型的元素,只能存儲引用數據類型 Collectio ...
集合
集合介紹:
由於數組中存放對象,對對象操作起來不方便。java中有一類容器,專門用來存儲對象。
集合與數組的區別:
1.數組的長度固定的,而集合長度時可變的
2.數組只能儲存同一類型的元素,而且能存基本數據類型和引用數據類型。集合可以存儲不同類型的元素,只能存儲引用數據類型
Collection介面描述:
java.util.Collection 介面是集合中的頂層介面
Collection介面常用的子介面有List 介面和Set介面
List介面中常用的子類有:ArrayList類(數組列表)和LinkedList(鏈表)
Set介面中常用的子類有:HashSet (哈希表)和LinkedHashSet(基於鏈表的哈希表)
Collection介面中的基本方法:
1.添加元素
boolean add(E e)
2.刪除集合中指定元素
boolean remove(Object o);
3.判斷集合中是否包含指定元素
boolean contains(Object o);
4.獲取集合中元素的個數
int size();
5.清空集合中的元素,集合還是存在的
void clear();
6.將集合轉換成數組,數組儲存的數據類型是Object
Object[] toArray();
Iterator迭代器
迭代器的好處:屏蔽了集合之間的不同,可以使用相同的方式取出
Collection集合元素的通用獲取方式:在取出元素之前先判斷集合中有沒有元素。如果有,就把這個元素取出來,繼續再判斷,如果還有就再取出來,一直把集合中的所有元素全部取出來,這種取出元素的方式專業術語稱為迭代。
Collection中有一個抽象方法iterator方法,所有的Collection子類都實現了這個方法;返回一個Iterator對象
Iterator<E> iterator();
迭代器的兩個方法:
1.判斷還有沒有下個元素可以迭代,如果有就返回true
boolean hasNext();
2.返回迭代下一個元素值,並將指針向後移動一位
E next();
註意:在進行集合元素取出的時候,如果集合中沒有元素了,還繼續使用next()方法的話,將發生NoSuchElementException沒有集合元素的錯誤
修改併發異常:
產生原因:在迭代集合中元素的過程中,集合的長度發生改變(進行了元素增加或者元素刪除的操作);
增強for的底層原理也是迭代器,所以也需要避免這種操作;
有些迭代器就避免了這樣的問題,如listiterator
增強for:
jdk1.5之後出現的一個高級for迴圈,專門用來遍歷集合和數組,他的內部原理其實是個迭代器,所以在遍歷的時候,不能對集合中的元素進行操作;
格式:
for(元素的數據類型 變數:集合或者是數組){ }
好處:代碼減少,方便遍歷
弊端:沒有索引,不能操作容器里的元素