02 集合框架之Collection、泛型

一、集合和數組的區別?

1.數組長度固定,集合長度可變

2.集合存儲的都是對象,

ArrayList<Integer>

 

Java Integer(-128~127)值的==和equals比較產生的思考

對於下圖,如果Integer的值在(-128~127)則用==和equals比較的話,效果是一樣的,但是不建議包裝類型用==(地址值的比較)

二、集合框架

Collection接口中的方法(底下的接口/實現類都可以使用)

共性的方法:

public boolean add(E e): 把給定的對象添加到當前集合中 。

public void clear() :清空集合中所有的元素。

public boolean remove(E e): 把給定的對象在當前集合中刪除。

public boolean contains(E e): 判斷當前集合中是否包含給定的對象。

public boolean isEmpty(): 判斷當前集合是否爲空。

public int size(): 返回集合中元素的個數。

public Object[] toArray(): 把集合中的元素,存儲到數組中。

 

三、迭代器(Iterator 接口)(主要是遍歷沒有索引的集合)

通過集合的iterator()方法來獲取迭代器

Iterator<E>接口也是有泛型的,迭代器的泛型跟着集合走,集合是什麼泛型,迭代器就是什麼泛型

迭代器中注意兩個方法

1.hasNext() ------>判斷集合中是否還有下一個元素

2.next() -------->獲取集合中的元素

 

四、增強for循環(foreach循環)作用:主要用於遍歷沒有索引的集合,但是普通for不可以遍歷沒有索引的集合

底層使用的也是迭代器,使用增強for循環的格式,簡化了迭代器的書寫

格式:

小練習(基礎練習)

//創建Collection

// 存儲 "黃蓉""王語嫣","王語嫣","嶽琳珊","東方不敗";

//刪除所有的王語嫣;

while (collection.contains("王語嫣")){

collection.remove("王語嫣");//這隻能刪除第一次出現的元素,所以循環刪除

}

 

 

 

五、泛型

 

1.泛型概念:未知的類型

2.泛型可以定義的位置:

        1.接口;

        格式?

        public  interface 接口名 <泛型>{

            //代碼

        }

        2.類;

        格式?

        public class 類名<泛型的名稱>{

            //使用泛型

        }

        3.方法;

        格式?

        修飾符 <泛型> 返回值類型  方法名(參數列表){

            //方法體

        }

        注意:方法上定義的泛型,它的作用域只是在本方法中

 

3.什麼時候定義泛型呢?

當我定義接口、類或者方法的時候,如果要用一個數據類型,但是我定義的時候不能確定究竟是那種類型的時候,這個時候用一個泛型來代替。

 

4.泛型通配符(?)

通配符基本使用    

理解如下代碼

public static void main(String[] args) {

    Collection<Intger> list1 = new ArrayList<Integer>();

    getElement(list1);

    Collection<String> list2 = new ArrayList<String>();

    getElement(list2);

}

public static void getElement(Collection<?> coll){

}

//?代表可以接收任意類型

 

 

泛型的上限

 

格式: 類型名稱 <? extends 類 > 對象名稱

 

意義: 只能接收該類型及其子類

 

泛型的下限

 

格式: 類型名稱 <? super 類 > 對象名稱

 

意義: 只能接收該類型及其父類型

 

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