如下介紹接口:java
List接口:(介紹其下的兩個實現類:ArrayList和LinkedList)算法
ArrayList和數組很是相似,其底層①也用數組組織數據,ArrayList是動態可變數組。數組
① 底層:指存儲格式。說明ArrayList對象都是存在於數組中。工具
注:數組和集合都是從下標0開始。指針
ArrayList有一個add(Object o)方法用於插入數組。對象
ArrayList的使用:(完成這個程序)排序
先import java.util.*;接口
用ArrayList在一個數組中添加數據,並遍歷。字符串
ArrayList中數組的順序與添加順序一致。get
只有List可用get和size。而Set則不可用(因其無序)。
Collection接口都是經過Iterator()(即迭代器)來對Set和List遍歷。
經過語句:Iterator it=c.iterator(); 獲得一個迭代器,將集合中全部元素順序排列。而後能夠經過interator方法進行遍歷,迭代器有一個遊標(指針)指向首位置。
Interator有hasNext(),用於判斷元素右邊是否還有數據,返回True說明有。而後就能夠調用next動做。Next()會將遊標移到下一個元素,並把它所跨過的元素返回。(這樣就能夠對元素進行遍歷)
練習:寫一個程序,輸入對象信息,比較基本信息。
集合中每個元素都有對象,若有字符串要通過強制類型轉換。
Collections是工具類,全部方法均爲有用方法,且方法爲static。
有Sort方法用於給List排序。
Collections.Sort()分爲兩部分,一部分爲排序規則;一部分爲排序算法。
規則用來判斷對象;算法是考慮如何排序。
對於自定義對象,Sort不知道規則,因此沒法比較。這種狀況下必定要定義排序規則。方式有兩種:
① java.lang下面有一個接口:Comparable(可比較的)
可讓自定義對象實現一個接口,這個接口只有一個方法comparableTo(Object o)
其規則是當前對象與o對象進行比較,其返回一個int值,系統根據此值來進行排序。
如 當前對象>o對象,則返回值>0;(可將返回值定義爲1)
如 當前對象=o對象,則返回值=0;
如 當前對象<o對象,則返回值〈0。(可將返回值定義爲-1)
看TestArraylist的java代碼。
咱們經過返回值1和-1位置的調換來實現升序和降序排列的轉換。
② java.util下有一個Comparator(比較器)
它擁有compare(),用來比較兩個方法。
要生成比較器,則用Sort中Sort(List,List(Compate))
第二種方法更靈活,且在運行的時候不用編譯。
注意:要想實現comparTo()就必須在主方法中寫上implement comparable.
練習:生成一個EMPLOYEE類,而後將一系列對象放入到ArrayList。用Iterator遍歷,排序以後,再進行遍歷。