1、單列集合和雙列集合
——————————————————單列集合
Collection(最底層的父類)
List 有序,可重複
ArrayList 查詢速度快,增刪慢;底層用Object類的數組實現
LinkedList 查詢速度塊,增刪塊;
Vector 與ArrayList相同,操作效率低,線程安全(多個可以同時訪問)
Set 無序,不可重複
HashSet 底層是hash表支持的,存取速度快
TreeSet 底層是二叉樹有序結構,無序數據必須實現Comparable(判斷數值)接口,重複(0),不允許添加
——————————————————雙列集合
Map key不允許重複,value允許重複
HashMap 底層是hash表實現的,用equals方法進行判斷(判斷是否是同一對象)
TreeMap底層是二叉樹的有序結構,對元素排序存儲。無序數據必須實現Comparable接口,或者自定義比較器 Comparator。
HashTable 線程安全,操作效率低。不允許存入null。
2、Map
不能直接取出元素,需要轉成set,通過迭代獲取元素。
Map常用方法:
put;clear;
map的兩種取出方式
Set<String> ks = map.keySet(); //Set有迭代器,可以將map存入set迭代取出
Iterator<String> it = ks.interator();
——————————————————————————————————
Set<Map.Entry<String,String>> ks = map.entrySet(); //Set有迭代器,可以將map存入set迭代取出
Iterator<Map.Entry<String,String>> it = ks.interator(); //將map存入entrySet迭代取出。Entry時Map中的一個內部 接口
3、集合框架中的工具類
colletctions常用方法
sort //根據元素的自然順序進行升序排序,元素實現Comparable接口。需要改變排序規則時,比如按字符串長度進 行比較,需要自定義比較器Comparator
binarySearch//二分法搜索,二分法使用前提是必須先進行sort。搜索不到時返回-插入點-1
4、Arrays用於操數組的靜態工具類
Arrays.toString(arr)
5、將數組轉換爲List的好處:可以使用List的相關方法操作數組。但是不能進行增刪操作,因爲數組的長度是固定的。
強行增刪會報UnsupportedOperationException.轉換時如果數組中的元素爲引用類型,則List中的元素爲數組中的 元素;如果是基本類型,則將數組對象存爲List元素。
Arrays.asList(arr)
6、面試題:
傳統for循環和高級for區別:
高級for必須有遍歷的目標,且目標只能是數組或集合;傳統for可以定義下標,便於使用。map也可以使用高級for 進行遍歷
7、可變參試,隱式將參數封裝爲數組。必須位於參數列表最後
8、靜態導入:
類重名,指定包名-全限定名
方法重名,指定所屬對象或類
9、面試題:
ArrayList和Vector的區別:
底層都是使用了Object類的數組實現的;
ArrayList是線程不同步的操作效率高,Vector是線程同步的操作效率低;
ArrayList是jdk1.2出來的,Vector是jdk1.0出來的