容器
Collection接口定義了存取一組對象的方法,其子接口Set和List分別定義了存儲方式
·Set中的數據對象沒有順序且不能夠重複 HashSet
·List中的數據對象有順序且能夠重複 LinkedList(底層爲鏈表) ArrayList(底層爲數組)
·Array讀快改慢
·Linked改快讀慢
·Hash二者之間
Map接口定義了存儲「鍵(key) - 值(value)映射對」的方法 HashMap
①Collection接口中所定義的方法
int size()
boolean isEmpty()
void clear()
boolean contains(object element) //是否包含了element元素
boolean add(object element)
boolean remove(object element)
Iterator iterator();
boolean containsAll(Collection c) //是否包含了集合c裏面的全部元素
boolean addAll(Collection c)
boolean removeAll(Collection c) //移除有集合c裏面的全部元素
boolean retainAll(Collection c) //跟另外一個集合的交集
Object[] toArray()
②Iterator接口 爲了統一遍歷Collection中方法,
·全部實現了Collection接口的容器類都有一個iterator方法用以返回一個實現了Iterator接口的對象
·Iterator對象稱做迭代器,用以方便的實現對容器內元素的遍歷操做
·Iterator接口定義了以下方法
·boolean hasNext() //判斷遊標右邊是否有元素
·object next() //返回遊標右邊的元素並將遊標移動到下一個位置
·void remove() //刪除遊標左面的元素,在執行完next以後該操做只執行一次
補充:加強的for循環
缺陷:
·數組:不能方便的訪問下標值
·集合:與使用iterator相比,不能方便的刪除集合中的內容
總結:除了簡單遍歷並讀出其中的內容
int[] arr = {1,2,3,4,5};
for(int i : arr){
System.out.println(i);
}
Collection c = new ArrayList();
c.add();
c.add();
c.add();
for(Object o : c){
System.out.println(o);
}
③Set接口
·Collection的子接口,Set接口沒有提供額外的方法,但實現Set接口的容器類中的元素是沒有順序的,並且不能夠重複
·Set容器能夠與數學中「集合」的概念相對應
·J2sDK API中所提供的Set容器類有HashSet,TreeSet等
④List接口
·List接口是Collection的子接口,實現List接口的容器類中的元素是有順序的,能重複的
·List容器中的元素都對應一個整數型的序號記載其在容器中的位置,能夠根據序號存取容器中的元素
·J2SDK 所提供的List容器類有ArrayList,LinkedList等。
List容器經常使用算法
·void sort(List) 對List容器內的元素排序
·void shuffle(List) 對List容器內的對象進行隨機排序
·void reverse(List) 對List容器內的對象進行逆序排列
·void fil(List, object) 用一個特定的對象重寫整個List容器
·coid copy(List dest, List src) 將src List容器內容拷貝到dest List容器
·int binarySearch(List,object) 對於順序的List容器,採用折半查找的方法查找特定對象
⑤comparable接口
·全部能夠「排序」的類都實現了此方法,
·只有一個方法public int compareTo(object obj);
返回0 表示 this == obj
返回正數 表示 this > obj
返回負數 表示 this < obj
⑥Map接口
·實現Map接口的類用來存儲鍵 -值 對
·Map接口的實現類有HashMap 和 TreeMap 等
·Map類中存儲的鍵 - 值對經過鍵來標識,因此鍵值不能重複
Object put(Object key, Object value)
Object get(Object key)
Object remove(Object key)
boolean containsKey(Object key)
boolean containsValue(Object value)
int size()
boolean isEmpty()
void putAll(Map t)
void clear()
自動打包 Auto-boxing/unboxing
·在覈實的時機自動打包、解包
·自動將對象轉換爲基礎類型
泛型Generic
原由:
·JDK1.4之前類型不明確:
·裝入集合的類型都被看成Object對待,從而失去本身的實際類型
·從集合中取出時每每須要轉型,效率低,容易產生錯誤
解決辦法
·在定義集合的時候同時定義集合中對象的類型
·實例:
·能夠再定義Collection的時候指定
·也能夠在循環時用Iterator指定
List<String> c = arrayList<String>();
Iterator<String> it = c2.iterator();
好處
·加強程序的可讀性和穩定性
補充:Object是全部類的父類,其中的一些方法
toString()方法
·public String toString() 描述當前對象的有關信息
·在進行String與其它類型數據的鏈接操做時,(如:System.out.println("info" + person))將自動調用該對象類的toString()方法
·能夠根據須要在用戶自定義類型中重寫toString()方法
hashCode()方法
哈希碼
equals()方法 至關於「==」 因此大多數類中重寫了equals()方法
public boolean equals(Object obj)
比較對象是否相等,重寫
public boolean equals(Object obj){
if(obj == null) return false;
else{
if(obj instanceof class){ //class類,判斷obj是否屬於class類
Class c = (class)obj;
if(c.color == this.color && ...){ //全部屬性都相同
return true;
}
}
}
}
總結:1136
·一個圖
Collection Map
/ \ |
set list hashMap
/ / \
hashSet arrayList linkedList
·一個類
·Collections
·三個知識點
·for
·Generic(泛型)
·Auto-boxing/unboxing
·六個接口
·colleciton
·set
·list
·map
·Iterator
·comparable
算法