Collection接口是List、Set、Queue接口的父接口
Collection接口定義了可用於操作List、Set和Queue的方法--增刪改查
List接口及其實現類--ArrayList
List是元素有序並且可以重復的集合,被稱為序列。
List可以精確的控制每個元素的插入位置,或刪除某個位置元素
List有add()插入方法和get()獲取方法
ArrayList--數組序列,是List的一個重要實現類
ArrayList底層是由數組實現的,這也是其名字的由來
List接口
List中的元素是有序的且可以重復
添加:ArrayList.add(對象),默認添加在List的最后,可以在指定位置添加 ArrayList.add(索引位置,對象),可以用get()方法取出來
ArrayList.addAll(Arrays.asList(數組對象))方法可以一次添加多個對象,Arrays.asList()就是將數組轉化為一個List對象
ArrayList.get(int index) 一定要注意,a使用dd()或者是addAll()方法插入的元素一律會變成Object類型,那么使用get()方法取出時也將是Object類型的,這是接受取出的元素時,要做相應的類型強轉。
類型 對象 = (類型) ArrayList.get(索引位置);//對象存入集合都變成object類型,取出時需要進行類型轉換
刪除:ArrayList.remove(對象或者對象在List中的索引位置)
修改:ArrayList.set(索引位置,修改內容)
通過ArrayList.size()方法可以得到List長度
可以通過foreach(元素類型 元素變量 :遍歷對象名(即數組名))方法,get方法,迭代器iterator方法 遍歷List
foreach方法中,元素類型固定為Object,因為放到集合中時,元素的類型被忽略了
iterator方法中,用hasNext()方法來確定是否List還有元素,有則返回true。迭代器不存儲東西,依賴其他結構存在
泛型
在開發中,可以創建一個泛型來規定對象的類型。在集合中,不能添加泛型規定類型意外的對象。
泛型中除了可以添加規定的類型還可以添加規定類型的子類型。
定義子類型的時候要在父類型中添加一個無參的構造方法,否則出錯,因為調用子類型的構造方法時,系統會默認調用父類的無參構造方法(super();)。
泛型集合中不能使用基本數據類型,要使用基本數據類型的包裝類,即Integer,Long,Boolean。或者為引用類型List<Course> course
Set接口
Collection接口-Set接口 - 實現類HashSet
一、Set是元素【無序且不可重復】的集合,被稱作集
二、HashSet——哈希集,是Set的重要實現類
***注意:與List比較
· Set的遍歷只能用foreach和iterator,不能用get()方法(因為是無序表),同理,也沒有set()方法
· Set中重復添加一個對象,只會保留一個,並且保留的是第一次的添加的那一個。
Set中可以添加空對象,但是一般開發中不這么用。
List和Set都可以用contains()方法判斷是否包含某元素,
contains()方法的實現原理:當調用List中contains()方法時,相當於遍歷list中的每一個元素,然后再調用每個元素的equals()方法,去跟contains()中的對象比較,如果有一個元素的equals()方法返回一個true值,那么contains()方法就返回一個true值;否則返回一個false值。所以contains()方法的本意是是否存在某個對象的引用,如果判斷是否存在某個內容,就要重寫equals()方法。
其中HashSet Contains()方法是先調用hashCode()方法,在調用equals()方法