1. 程式人生 > >《黑馬程式設計師》java筆記->集合礦建的由來,Collection介面,迭代器

《黑馬程式設計師》java筆記->集合礦建的由來,Collection介面,迭代器

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


public static void main(String[] args) {



/*
* 集合:
* 1,用於儲存物件的容器。
* 2,該容器的長度是可變的。

* 集合和陣列的區別?
* 1,
* 集合長度是可變的。
* 陣列長度是固定的。
* 2,
* 集合中只能儲存物件。 
* 陣列中即可以儲存物件,又可以儲存基本型別數值。
* 3,
* 集合中儲存的物件可以是任意型別的。
* 陣列中只能儲存同一型別的物件。

*/

/*
* 集合框架的由來:

* 容器很多,因為每個容器中的資料結構是不同的。
* 資料結構:就是資料在容器中儲存方式
* 如果散裝雞蛋和品牌雞蛋的儲存方式。

* 容器雖然因為結構有不同,但是都具備著共性,可以不斷地向上抽取。
* 就形成集合框架,該框架的頂層之一就是Collection介面。
* 該介面中定義了集合框架中最共性的功能。

* 最終使用的時候,其實使用的該框架最子類的物件。 


*/

/*
* Collection中有哪些方法呢?
* 1,新增方法。 
* boolean add(object e):一次新增一個元素。
* boolean addAll(Collection):將一個引數容器中的元素新增到當前容器中。
*
* 2,刪除方法。
* boolean remove(object):刪除一個指定物件。 
* boolean removeAll(Collection):刪除指定collection中和本Collection中相同的元素。 
* void clear():直接將集合中的元素清空。
* 3,判斷方法:
* boolean contains(object):是否包含指定元素。
* boolean containsAll(Collection):是否包含指定容器中的元素。 
* boolean isEmpty():是否有元素。
* 4,獲取元素個數:
* int size():獲取元素有幾個。
* 5,取交集。
* boolean retainAll(collection):保留和指定collection集合中相同的元素,不相同的元素會被刪除。
* 6,將集合轉成陣列。
* Object[] toArray():
* 7,取出元素的方法:
* Iterator iterator():



*/


//Collection coll = new ArrayList();
//collectionDemo(coll);

Collection c1 = new ArrayList();
Collection c2 = new ArrayList();

collectionAllDemo(c1,c2);

}




/*
* 演示Collection中的基本方法。
*/
public static void collectionDemo(Collection coll){

//1,新增元素。
coll.add("abc1");
coll.add("abc2");
coll.add("abc3");

System.out.println(coll);//"[abc1, abc2, abc3]"

//2,刪除元素。
//boolean b = coll.remove("abc22");
//System.out.println(coll);
//System.out.println("b="+b);
//3,清空集合。
//coll.clear();

//4,是否包含某一個元素。
boolean b = coll.contains("abc3");
System.out.println(coll);
System.out.println("b="+b);


}


/*
* 演示Collection中程式碼All的方法。
*/
public static void collectionAllDemo(Collection c1,Collection c2){


//給這兩個集合中儲存一些元素。 
//c1.add("abc1");
//c1.add("abc2");
c1.add("abc3");
c1.add("abc4");
//c1.add("abc5");

c2.add("abc3");
c2.add("abc4");
c2.add("abc7");

System.out.println(c1);

//1,新增c2中的元素到c1中。
//c1.addAll(c2);

//2,判斷c1是否包含c2中的元素。
//boolean b = c1.containsAll(c2);
//System.out.println("b="+b);

//3,將c1中與c2中相同的元素刪除。
//c1.removeAll(c2);

//4,將c1中與c2中相同的元素保留,將不同的刪除。
//boolean b = c1.retainAll(c2);//只要c1集合中的元素髮生變化,就為true。 不變化就為false。
//System.out.println("b="+b);
System.out.println(c1);

}

--------------------------------------------------------------------------------------------------------------------------------------------------

public static void main(String[] args) {


/*
* 集合一些小細節。

*/
//建立一個集合容器。其實也是一個物件。
//這個物件中儲存著特定結構可以對物件進行儲存。
Collection coll = new ArrayList();
/*
* 1,儲存時,add可以接收任意型別的物件因為引數型別是Object。
* 所以物件元素存入時都被提升為了Object。

* 2,其實在集合中真正儲存都是物件的引用。

*/
coll.add(new Object());
coll.add("abc");

/*
* 用迭代器取出時,其實取出的也是引用。
*/


coll.add(5);//可以。jdk1.5後,有了自動裝箱機制。相當於new Integer(5).裝箱Integer.valueOf(5);
//等同於coll.add(Integer.valueOf(5));//拆箱 intValue();
}

---------------------------------------------------------------------------------------------------------------------------------------------------------

public static void main(String[] args) {


/*
* 一般開發時,最常見的就是往集合儲存自定義物件。
* 1,對自定義物件進行描述。  

* 儲存時,都被提升為了Object。

* 取出時如果要使用自定義物件的特有方法,一定要進行向下轉型。


* 注意事項:在迭代時,迴圈中只要有一個next()即可
* 。
*/
Collection coll = new ArrayList();

coll.add(new Person("lisi1",21));//新增的時候都被提升為了Object。
coll.add(new Person("lisi2",22));
coll.add(new Person("lisi3",23));
//coll.add(new Person("lisi4",24));

//取出元素。
Iterator it = coll.iterator();

while(it.hasNext()){

Person p = (Person)it.next();
System.out.println(p.getName()+":"+p.getAge());

//System.out.println(((Person)it.next()).getName()+":"+((Person)it.next()).getAge());

}

}

--------------------------------------------------------------------------------------------------------------------------------------



/*
* 迭代器:取出集合中元素的方式的一個物件。該物件本身就內建在容器中。

* 如何獲取到集合的迭代器呢?
* 可以通過iterator()方法來完成。該方法返回一個Iterator型別物件。


* 迭代器接口出現:將每一個容器中的取出方式進行了封裝。並對外暴露。
* 這樣無論是什麼容器或者資料結構,只要內部取出方式實現了Iterator介面,
* 都可以通過該介面取出這些容器中的元素。

* 它的出現,將容器的取出方式和容器的資料結構相分離,降低了耦合性。 
* 而取出方式因為直接在訪問容器中的元素,並依賴具體的資料結構,所以被定義在了容器中。
* 通過內部類來實現Iterator介面。

* 大型遊戲機中抓布娃娃的遊戲機中的夾子。就是那個迭代器。 
* 請看該專案中的圖片。

* 只要是Collection集合中的容器,迭代器是通用取出方式。 

*/

//建立集合。 
Collection coll = new ArrayList();
//新增元素。
coll.add("abc1");
coll.add("abc2");
coll.add("abc3");


/*
//獲取該集合的迭代器物件。
Iterator it = coll.iterator();

//使用迭代器物件中的方法完成元素的獲取。 
while(it.hasNext()){
System.out.println(it.next());
}
*/

//將while改成for結構。開發的時候建議寫for。
for(Iterator it = coll.iterator(); it.hasNext(); ){
System.out.println(it.next());
}

//System.out.println(it.next());
//System.out.println(it.next());
//System.out.println(it.next());//next()可以取出元素。而且自動往下取。
}