Java容器
容器:Java API所提供的一系列執行個體類,用來在程式中存放對象。
Collection接口是List 和Set接口的父接口,它定義了存儲對象的方法,而List和Set分别定義了存儲的方式
其中定義的一些方法:
Int size()
Boolean isEmpty()
Void clear()
Boolean contains(Object element)
Boolean add(Object element)
Boolean remove(Object element)
Iterator iterator()
Boolean containsAll(Object element)
Boolean addAll(Object element)
Boolean removeAll(Object element)
Object toArray()
Set接口 : 無順序且不可重複(沒有提供額外的方法,與數學概念中的”集合“相對應)
List接口 :有順序且可重複
主要方法:
Object get(int index)
Object set(int index, Object ob) //傳回被替換的原有元素
Void add(int index, Object ob)
Object remove(int index)
Int indexOf(Objexct ob)
Int lastIndexOf(Object ob)
List常用算法:java.util.Collections提供了一些靜态方法實作了一些基于list容器的算法
Void sort(list l) //對list容器内的對象元素排序
Void shuffle(list l) //對list容器内的對象元素随機排列
Void reverse(list l) //對list容器内的對象元素逆序排列
Void copy(list dest, list src) //将src容器複制到dest中
Void binarySearch(list l, Object ob) //利用二分法查找對象元素
Java.util.Collections提供的算法都是基于Java.lang.comparable接口的
所有可以實作上述算法的類都是實作了comparable接口
Comparable接口中隻有一個方法
Public int compareTo(Object ob)
This==Object 傳回0
This>Object 傳回1
This<Object 傳回-1
實作了comparable接口的類都是通過實作compareTo方法來實作排序等算法
容器類的對象在使用remove contains方法時,需要比較對象是否相等 這需要調用對象的equals 和 hashcode 方法 ;對于自定義類,需要重寫equals 和hashcode 方法,已實作自定義的對象相等的規則(相等的對象應該具有相等的hash code)
Iterator接口:
1. 所有實作了collection接口的類都有一個iterator方法用以傳回一個實作了iterator的對象
2. Iterator接口稱做周遊器,用以實作對容器中的元素的周遊操作
3. Iterator的方法有:
Boolean hasNext() //遊标右邊任然有元素,可以疊代
E next() //傳回遊标右邊的下一個元素(傳回值是Object類型,需要強制轉為自己需要的類型)
Void remove() //從疊代器指向的 collection 中移除疊代器傳回的最後一個元素(可選操作)。每次調用 next 隻能調用一次此方法。如果進行疊代時用調用此方法之外的其他方式修改了該疊代器所指向的 collection,則疊代器的行為是不确定的。
***Iterator的remove方法是在疊代過程中删除元素的唯一安全的方法
如何選擇資料結構:Array 讀快改慢 Linked讀慢改快 Hash 介于兩者之間
Map接口:定義了存儲“鍵-值映射對“的方法
Map接口的實作類有hashmap和treemap
Map 中存儲鍵值對(key-value)通過鍵來辨別,是以鍵值不能重複
Map的主要方法:
Object put(Object key, Object values)//替換鍵對應的值并傳回原來的值
Object get(Object key) //傳回對應的Value
Object remove(Object key) /
Boolean containsKey(Object key)
Boolean containsValue(Object value)
Int size()
Boolean isEmpty()
Void putAll(Map m)
Void clear()
泛型結合集合使用:在定義集合同時定義集合中元素的類型。也可以在定義Iterator時使用泛型