------<a href="http://www.itheima.com" target="blank">Java培訓、Android培訓、iOS培訓、.Net培訓</a>、期待與您交流! -------
一、集合(掌握)
(1)集合的由來
我們需要對多個對象進行存儲和獲取。可以使用對象數組。但是,如果對象的個數是變化的,對象數組就解 決不了了。怎麼辦呢?java就提供了集合類解決。
(2)集合和數組的區別
A:長度問題
數組長度固定
集合長度可變
B:存儲元素類型1
數組只能存儲同一種類型
集合可以存儲不同類型的對象
C:存儲元素類型2
數組可以存儲基本類型,也可以存儲引用類型。
集合只能存儲引用類型。(基本數據類型可以通過包裝類來實現在集合中存儲)
(3)集合體系
多種集合的數據結構不同,但是,它們有共性的功能。通過不斷的向上抽取,最終形成了集合的體系結構。
Collection
|--List
|--ArrayList
|--Vector
|--LinkedList
|--Set
|--HashSet
|--TreeSet
|--Map
|--HashMap
|--LinkedHashMap
|--Hashtable
|--TreeMap
(4)Collection接口的功能:
A:添加功能
add(Object obj)
B:刪除功能
remove(Object obj)
C:判斷功能
contains(Object obj)
D:獲取功能(迭代器)
Iterator iterator()
E:長度
size()
(5)迭代器
A:迭代器其實就是遍歷集合的一種方式。
B:使用限制:
迭代器不能單獨使用,它依賴於集合而存在。
C:使用步驟
a:通過集合對象調用iterator()方法得到迭代器對象。
b:通過迭代器對象的hasNext()方法判斷是否有元素。
c:通過迭代器對象的next()獲取元素。
D:原理:
是以內部類形式存在的。
(6)案例:(掌握)
集合的使用步驟:
A:創建集合對象
B:創建元素對象
C:把元素添加到集合中
D:遍歷集合
a:通過集合對象調用iterator()方法得到迭代器對象。
b:通過迭代器對象的hasNext()方法判斷是否有元素。
c:通過迭代器對象的next()獲取元素。
存儲字符串並遍歷:
Collection c = new ArrayList();
String s1 = "hello";
String s2 = "world";
String s3 = "java";
c.add(s1);
c.add(s2);
c.add(s3);
Iterator it = c.iterator();
while(it.hasNext()) {
String s = (String) it.next();
System.out.println(s);
}
存儲自定義對象並遍歷(略)
二、List及其子類(掌握)
(1)List的特點:
Collection
|--List:元素有序(存入順序和取出順序一致),可重複。
|--Set:元素無序,唯一。
(2)List的特有功能
A:添加功能
add(int index,Object obj)
B:刪除功能
remove(int index)
C:獲取功能
get(int index)
D:修改功能
set(int index,Object obj)
(3)案例:
List存儲字符串並遍歷。
List存儲自定義對象並遍歷。
使用集合存儲自定義對象的步驟:
1、定義要存儲到集合當中的類
2、創建集合 集合引用變量 = new 集合();
3、創建要存儲到集合當中的類的對象們
4、調用集合方法,存儲對應的對象
5、返回對應集合的迭代器
6、使用迭代器判斷是否有下個元素
7、如果有下個元素則獲取下個元素
(4)List的三個子類的特點:
|--ArrayList
底層數據結構是數組,查詢快,增刪慢。
線程不安全,效率高
|--Vector
底層數據結構是數組,查詢慢,增刪慢。
線程安全,效率低。所以一般不用。
|--LinkedList
底層數據結構是鏈表,查詢慢,增刪快。
線程不安全,效率高。
到底使用誰?
是否需要安全:
是:Vector(將來其實也不用這個,會有更好的方式,後面提)
否:用ArrayList或者LinkedList
如何查詢多:ArrayList
如果增刪多:LinkedList
如果你根本就不知道用誰?
用ArrayList。
(5)List的三個兒子的各自特有功能:(瞭解)
A:ArrayList
B:Vector
JDK1.0時候的功能。但是後來被替代。所以不用掌握。
C:LinkedList
由於是鏈表,所以,操作開頭和結尾比較簡答。提高了添加,刪除,獲取開頭或者結尾。
(6)遍歷
Collection:迭代器。
|--List:普通for
|--ArrayList
|--Vector 返回Enumeration
|--LinkedList
(7)ListIterator(理解)
A:可以逆向遍歷,但是要先正向遍歷,所以一般不用。
B:可以解決併發修改異常問題。
併發修改異常:在用迭代器遍歷集合的時候,通過集合去修改了集合的元素。
解決方案:
a:通過列表迭代器遍歷,通過列表迭代器修改集合。
b:通過集合遍歷,通過集合修改集合。
------<a
href="http://www.itheima.com" target="blank">Java培訓、Android培訓、iOS培訓、.Net培訓</a>、期待與您交流! -------