集合,是Java中提供的一種容器,能夠用來存儲多個數據。java
集合與數組的區別:數組的長度是固定不變的,集合的長度是可變的;數組中存儲的是同一類型的元素,能夠存儲基本數據類型,也能夠存儲對象,而在集合中只能對象。數組
常見集合有:Vector集合(有序集合),ArrayList集合(有序集合),LinkedList集合(有序集合),TreeSet集合(無序集合,存入和取出的順序可能不同),HashSet集合(無序集合,存入和取出的順序可能不同),LinkedHashSet集合(有序集合)。框架
在學習集合中,應該掌握如何使用集合存儲數據;會遍歷集合,把數據取出來;掌握每種集合的特性。學習
是Vector集合,ArrayList集合,LinkedList集合的共性抽取,造成的父類(接口);指針
1).是有序的集合(存儲和取出元素的順序相同)。對象
2).容許存儲重複的元素。索引
3).有索引,可使用普通的for循環遍歷。接口
是TreeSet集合,HashSet集合的共性抽取,造成的父類(接口),LinkedHashSet集合(有序集合)是HashingSet的子類;rem
1).不容許存儲重複的元素;it
2).沒有索引(不能使用普通的for循環遍歷)。
Collection接口:
定義的是全部單列集合中共性的方法;
全部的單列集合均可以使用共性的方法。
沒有帶索引的方法。
集合的學習方式:
1).學習頂層:學習頂層接口/抽象類中的共性方法,全部子類均可以使用。
2).使用底層:底層不是接口就是抽象類,沒法建立對象使用,須要使用底層的子類建立對象使用。
1).public bollenan add(E e);用於把給定對象添加到當前集合中;
2).public clear();用於清除集合中的全部元素;
3).public boolean remove(E e);把給定的對象在當前集合中刪除;
4).public boolean isEmpty();判斷是否爲空;
5).public int size();返回集合中元素的個數;
6).public boolean contains(E e);用於判斷集合中是否含有給定的對象;
7).public Object[ ] toArray();把集合中的元素存儲到數組中。
是對集合進行迭代的迭代器。
java.util.Iterator接口:迭代器(對集合進行遍歷)。
1).boolean hasNext();
判斷集合中是否還有下一個元素,如有則返回ture,沒有則返回flase。
2).E next();
判斷迭代的下一個元素(作兩件事:先去除下一個元素,而後指針後移一位)。
注意:Iterator迭代器是接口,沒法使用,須要使用Iterator接口的實現類的對象。
獲取實現類的方法比較特殊,在Colleation接口中有一個方法叫iterator(),這個方法返回的就是迭代器的實現類對象。
Iterator<E> iterator()返回的就是在此Colleation的元素上進行迭代的迭代器。
1).使用集合中的方法iterator獲取迭代器的實現類對象,使用Iterator接口接收(這是一個多態)。
2).使用Iterator接口中的方法hasNext判斷是否還有下一個元素。
3).使用Iterator接口中的方法next取出集合中下一個元素。
注意:Iterator<E>接口是有泛型的,迭代器的泛型緊跟着集合走,集合是什麼泛型,迭代器就是什麼泛型。
當沒有元素能夠在取出時就拋出異常(NoSuchElementException)。
其底層使用的也是迭代器,使用for循環的格式,簡化了迭代器的書寫。
是Java1.5以後的特性。
Collection<E> extends Iterator<E>:全部的單列集合均可以使用加強for循環。
public interface Iterable<T>實現這個接口容許對象成爲「foreach」語句的目標。
加強for循環是用來遍歷集合和數組的。
格式:
for(集合或數組的數據類型 變量名:集合名或數組名){ S.out(變量名);}
注意:該for循環必須有被遍歷的目標,目標只能是Collection或者都是數組,且該for循環僅做爲遍歷操做出現,不能在遍歷的過程當中對元素進行增刪操做。