Java基礎知識點總結-Java集合框架(一)

 

      集合框架

 

             【概述】

 

  1. 爲什麼會出現集合類?

    面嚮對象語言對事物的體現都是以對象的形式,所以爲了對多個對象進行操作,就對對象進行存儲,集合是存儲對象最常用的一種方式。

  2. 數組和集合都是容器,有何不同?

    數組雖然也可以存儲對象,但長度是固定的;而集合的長度是可變的

    數組可以存儲基本數據類型,集合只能存儲對象

    數組存儲的數據類型必須都一樣,而集合存儲的數據類型可以不同

  3. 集合類的特點?

    集合只用於存儲對象,集合長度是可變的,集合可以存儲不同類型的對象

                  【集合框架的構成及分類】

 

             【集合框架中的常用接口】

 

                    Collection接口有兩個子接口:List(列表)        Set(集)

 

                    -List:可存放重複元素,元素存取是有序的

 

                    -Set:不可以存放重複元素,元素存取是無序的

 

             【集合框架中的共性方法(以ArrayList加以說明)】

 

  • add(E e):將制定元素添加到此列表尾部  其中的參數類型是Object類型,用於接收任意類型的對象;集合中存放的都是對象的引用(地址)

  • addAll(Collection<? extends E>c):按照指定collection的迭代器所返回的元素順序,將collection中的所有元素添加到次列表

  • clear():移除此列表中的所有元素

  • contains(Object o):判斷此列表中是否包含制定元素    

  • isEmpty():判斷此列表是否爲空,即長度是否爲0

  • remove(Object o):移除此列表中首次出現的指定元素(如果存在)

  • removeAll(Collection<?extends E> c):移除此列表中那些也包含在指定Collection中的元素

  • retainsAll(Collection<? extendsE> c):只保留此列表中那些也包含在指定Collection中的元素

  • size():返回次列表的長度

  • Object[]toArray():返回包含此 collection中所有元素的數組

  • <T> T[] toArray(T[] a):返回包含此 collection中所有元素的指定數據類型數組

    注意:傳入指定類型的數組的長度應該定義多長呢?

            當傳入指定元素的數組長度小於集合的size,那麼該方法內部會創建

            一個新數組,長度爲集合的size;當傳入指定元素類型的數組長度大

            於集合的size,不會創建新數組,而是使用傳遞進來的數組,大於集

            合size的部分會被null填充;所以傳遞一個長度爲集合size的數組

            最優

    例:

 

import java.util.*;

class CollectionToArray {
	public static void main(String[] args) {
		ArrayList<String> al = new ArrayList<String>();
		al.add("java01");
		al.add("java02");
		al.add("java03");
		al.add("java04");
		String[] arr = new String[5];// 定義接收數組的數組變量
		arr = al.toArray(arr);// 返回由集合轉換的數組
		sop(Arrays.toString(arr));
	}

	public static void sop(Object obj) {
		System.out.println(obj);
	}
}

 

 

 

  • iterator():返回在此列表的元素上進行迭代的迭代器;利用該迭代器中的next(),hasNext()等方法可獲取此列表中的元素

    如:ArrayList al = new ArrayList();

            Al.add(…);

            …;

            for(Iterator it =al.iterator();it.hasNext();)

                   System.out.println(it.next());

    Iterator迭代器

           在訪問集合中的元素時,爲了可以直接訪問,就把這些方法定義在集合內      部,定義成內部類。每個容器的數據結構都不相同,所以具體的方法細節

           也不一樣,但我們可以把共性的內容抽取出來,定義成Iterator接口,即

           迭代器。這些內部類都符合Iterator規則。

    高級for循環

           格式:for(數據類型變量名 :被遍歷的集合(Collection)或數組)

           高級for循環對集合進行遍歷,只能集獲取閤中的元素,不能對集合進行

           其他操作;而迭代器除了能對集合進行遍歷外,還可以remove集合中的

           元素,如果是ListIterator,還可以在遍歷集合的過程中對集合進行增刪改

           查的操作

           傳統for和高級for有什麼區別呢?

                  高級for有一個侷限性:必須有被遍歷的目標

           建議在遍歷數組的時候使用傳統for,因爲傳統for可以定義角標

           例:

 

		HashMap<Integer, String> hm = new HashMap<Integer, String>();
		hm.put(1, "java01");
		hm.put(2, "java02");
		hm.put(3, "java03");
		Set<Integer> keySet = hm.keySet();
		for (Integer key : keySet) {
			sop("key:" + key + "\tvalue:" + hm.get(key));
		}
		Set<Map.Entry<Integer, String>> entrySet = hm.entrySet();
		for (Map.Entry<Integer, String> me : entrySet) {
			Integer key = me.getKey();
			String value = me.getValue();
			sop(key + "---" + value);
		}

 





發佈了37 篇原創文章 · 獲贊 1 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章