Java 學習筆記 兩大集合框架Map和Collection
兩大框架圖解
Collection介面
由第一張圖,我們可以知道,Collection介面的子介面有三種,分別是List介面,Set介面和Queue介面
List介面
允許有重複的元素,元素按照新增的順序進行排序
介面方法
- void add(int index,Objext o)
在集合的指定位置插入元素
- Object get(int index)
返回集合中某個指定位置的元素
- int indexOf(Object o)
返回第一次出現該元素的索引(下標),如果不包含此元素,返回-1
- int lastIndexOf(Object o)
返回最後一次出現該元素的索引(下標),如果不包含此元素,返回-1
- Object remove(int index)
移除集合某個索引的元素
- Object set(int index,Object o)
用指定的元素替換集合中某個指定下標的資料元素
- void add(int index,Objext o)
介面實現類的使用
ArrayList
新增方法:
addFirst
getFirst
removeFirst
addLast
getLast
removeLast
特點:在儲存方式上是採用陣列進行順序儲存
List list = new ArrayList(); List<泛型> list = new ArrayList<>();
LinkedList
特點:在儲存方式上是採用連結串列進行鏈式儲存
LinkedList<> list = new LinkedList<>();
PS:由於ArrayList是採用陣列進行儲存的,所以新增元素或者是刪除元素時,需要批量移動元素,所以效能較差。但查詢元素的時候,可以通過下標直接進行訪問,所以遍歷元素或隨機訪問元素的時候效率高。
而LinkedList與ArrayList相反
Set介面
不允許有重複的元素,元素沒有順序
介面方法
add
clear
contains
remove
和之前的List差不多,這裡就不多說介面實現類的使用
HashSet
下面的圖片很明顯,體現了沒有重複元素的規則
一般使用的話還是使用泛型使用
Set<Book> books = new HashSet<>();
TreeSet
由之前介紹的第四張圖可以看到,TreeSet既繼承了Set介面,也繼承了SortedSet介面(排序介面)
沒有使用泛型,預設使用的是String型別,String類實現了Comparable介面,預設是按字典排序,但是圖中明顯沒有實現排序?不理解。。
我使用英文開頭,才能實現排序
Set集合遍歷
//Iterator
Iterator iterator = set.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
//foreach
for (String s:set) {
System.out.println(s);
}Queue介面
較少使用。。
Map介面
使用鍵值對(key value)進行資料儲存,key與value是一種對映關係
- 介面方法
Object put(Object key,Object value)
將一個鍵值對存到Map中Object get(Object key)
由key獲得valueObject remove(Object key)
刪除該鍵值對Set keyset()
返回當前包含當前map的所有key的Set集合Collection values()
返回當前包含當前map的所有value的Collection集合boolean containsKey(Object key)
是否包含某個keyboolean containsValue(Object Value)
是否包含某個Valueint size()
返回當前map集合鍵值對的個數
介面實現類的使用
HashMap的使用
Map<String,String> map = new HashMap<>();
Map<Integer,String> map = new HashMap<>();
TreeMap的使用
Map<String,String> map = new TreeMap<>();
與之前的TreeSet一樣,TreeMap也是實現了SortedMap藉口,帶有排序,預設是按照key的數值自然排序(也就是升序)