1. 程式人生 > >黑馬程式設計師:Java基礎——集合框架之體系概述、共性方法與迭代器

黑馬程式設計師:Java基礎——集合框架之體系概述、共性方法與迭代器

------- Java EE培訓java培訓、期待與您交流! ----------

1.體系概述

    1.1 為什麼出現集合類?

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

    1.2 陣列和集合類同事容器,有何不同?

        1.2.1 陣列雖然也可以儲存物件,但長度是固定的

        1.2.2 集合長度是可變的

        1.2.3 陣列中可以儲存基本資料型別,集合只能儲存物件。

    1.3 集合類的特點

        1.3.1 集合只用於儲存物件

        1.3.2 集合長度是可變的

        1.3.3 集合可以儲存不同型別的物件

    1.4 集合的體系結構

       

Q&A:

    Q:為什麼會出現這麼多的容器呢?

    A:因為每一個容器對資料的儲存方式都有所不同。

這種儲存方式稱之為:資料結構。

2.共性方法

    在集合中有一些共性的方法,分別有:增,刪,查(獲取)。

    以下是示例程式碼:

import java.util.ArrayList;
public class CollectionDemo {
    public static void main(String[] args) {
    	base_retain();
	}
    
    
	public static void base_retain(){
		ArrayList a1 = new ArrayList();

		a1.add("Java01");
		a1.add("Java02");
		a1.add("Java03");
		a1.add("Java04");

		ArrayList a2 = new ArrayList();

		a2.add("Java05");
		a2.add("Java06");
		a2.add("Java01");
		a2.add("Java02");

		//a1.retainAll(a2);    //取交集,a1中只會保留和a2中相同的元素
		//a1.removeAll(a2); //將a1中,a1和a2的交集元素刪除
		a1.addAll(a2);          //將a2中的所有元素存入a1裡
		sop("a1=" + a1);
		sop("a2=" + a2);
    }
    
	public static void base_method(){
    	ArrayList a1 = new ArrayList();
		//1.新增元素
		a1.add("Java01");
		a1.add("Java02");
		a1.add("Java03");
		a1.add("Java04");
		
		//2.獲取個數,集合長度
		sop("Size="+a1.size());
		sop("a1="+a1);
		
		//3.刪除元素
		/*a1.remove("Java02");
		sop("現在a1="+a1);
		a1.clear();
		sop("a1="+a1+"--被清空");*/
		
		//4.判斷元素
		sop("Java03是否存在:"+a1.contains("Java03"));
		sop("集合是否為空:"+a1.isEmpty());
    }
    
    public static void sop(Object obj){
    	System.out.println(obj);
    }
}

擴充套件 

    1.add方法的引數型別是Object,以便於接收任意型別物件。
    2.集合中儲存的都是物件的引用(地址)。

3.迭代器

    在集合中去廚房是定義在了集合的內部,這樣取出方式就可以直接訪問集合內部的元素,那麼取出方式就被定義成了內部類。

    然而我們知道,每一個容器的資料結構不同,所取出的動作細節也不一樣,但都有一個共性的內容:判斷和取出。那麼可以將這些共性進行抽取。

    那麼這些內部類都符合一個規則,該規則就是Iterator。那又如何獲取集合的取出物件呢?通過一個對外提供的方法:iterator()。

以下是Iterator的程式碼:

public static void method_get(){
    	ArrayList a1 = new ArrayList();

	a1.add("Java01");
	a1.add("Java02");
	a1.add("Java03");
	a1.add("Java04");

	/*Iterator it = a1.iterator();
	while(it.hasNext()){
		sop(it.next());
		//String il = it.next().toString();
		if(!"Java02".equals(il)){
			sop(il);
		}
	}*/
	
	for(Iterator it = a1.iterator();it.hasNext();){
		sop(it.next());
	}
}
推薦使用for迴圈遍歷,這樣it在用完以後就會自動釋放。