一、集合和數組的區別?
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 類 > 對象名稱
意義: 只能接收該類型及其父類型