Java初級筆記_集合

------<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>、期待與您交流! -------

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章