1. map
- Map保存的數據是鍵值對,對集合中的數據操作是通過鍵對值進行操作鍵不能重複,值可以重複
- 如果鍵值存在,則修改對應的抽象值
- 對於數據的操作 通過鍵來完成的
- 增加put 修改put 刪除remover 查找get(key)=>value
- 遍歷:獲得所有的value構成的集合valus()=>collection集合中只保存有所有的valus的值因此無法對應的值(2)獲得所有的key構成的集合中保存所有的key,因此可以通過對應的key值找到對應的value值(3)獲得所有的key-value值,先使用set的entryset獲得,然後進行循環,並將obj轉換爲entry類型使用entry的getkey和getvalue的方法獲得鍵和值。
- HashMap根據hash算法保存數據,因此存放數據無序TreeMap根據key進行自然排序,因此存放的數據根據key從小到大排序一般情況下的key的數據類型比較簡單如(Integer,String)但是如何key的數據類型比較複雜的情況下(如自義定類型)則該複雜數據類型應該實現compareable接口的compareto實現方法
2.泛型集合
- 在定義集合使,規定集合保存的數據類型, 如果存放數據時不是該類型,則編譯出錯的,在操作的該集合數據無需類型轉換
- 格式:集合類型<保存數據類型>
3.自定義泛型
1) 泛型方法:參數類型任意, 返回類型與參數類型一致
訪問修飾符 <類型標示符>返回類型 方法名(類型標示符 參數名){}
何時指定具體的數據類型?
調用該方法時,根據實參的數據類型,指定類型標示符的數據類型
public T get(T obj){ return obj; } String str = t1.get(“abc”); 此時T就是String
2) 泛型類
語法: class 類名<類型標示符> {
在該類非靜態方法頭處可以使用類型標示符
靜態方法也要使用類型標示符,只能在方法聲明處自己定義類型標示符
}
class Test2 { public T set(int index, T obj){ return obj; } public static void show(T obj){ } } Test2 t2 = new Test2(); 此時T就是String
何時指定具體的數據類型?
創建該類對象時,指定數據類型
泛型類創建合法寫法 Test2 t2 = new Test2(); Test2 t2 = new Test2 (); // 默認Object Test2 t2 = new Test2 (); Test2 t2 = new Test2(); Test2 t2 = new Test2();
3) 泛型接口
語法: interface 接口名<類型標示符> { }
何時指定具體的數據類型?
a) 實現類在實現泛型接口時,指定具體數據類型
如 class Test implement ITest{}
b) 實現類未執行泛型接口的具體數據類型,則該實現類爲泛型類
如 class Test implements ITest{}
4.泛型的認識
- java se1.5 之前沒有泛型的時候只能通過object的引用實現參數的任意化比如自己在定義一個類的時候重寫compareto方法的時候要判斷傳過來的參數是否是該類的操作,如果是該類就將傳過來的數據強制轉化爲該類。
- 泛型的好處是在編譯的時候檢查類型的安全,並且所有的強制轉換都是自動和隱式的
5、Collections 對集合進行操作的類,提供了一些對集合操作的方法:
- Collections.swap(list, index1, index2)
- Collections.revers()
- Collections.sort(list [, comparator ])
- Collection. binarySearch(list, [, comparator ])
- Collection.max(list)
- Collection.min(list)
- Collection. replaceAll(list, oldObj, newObj)
- Collection. synchronizedSet(Set)
- Collection. synchronizedList(list)
- Collection. synchronizedMap(map)
List.toArray( array ) 將集合中的元素保存到指定數組中