1. 程式人生 > >Java之List&Set&Map詳解

Java之List&Set&Map詳解


1.常用的集合: Colleaction |---List |--ArrayList<T> |--LinkedList<T> |--Set |--HashSet<T> |--LinkedHashSet<T>
Map |--HashMap<K,V> |--LinkedHashMap<K,V>

2.ArrayLsit<T>和
HashSet<T>,HashMap<K,V> 之間的比較 : 2.1 ArrayList底層是用陣列來實現的, HashSet HashMap 底層是 hash 表實現的 2.2 ArrayList的元素存入和取出時的順序可以保證一致,而 HashSet HashMap 不能保證一致 , 但是 LinkedHashSethe LinkedHashMap 可以保證一致。 2.3 ArrayListZ中可以存放重複的元素,而 HashSet
HashMap 不能存放重複的元素   3.LinkedList和 ArrayList 的比較: LinkedList底層採用的是連結串列:增刪快,查詢慢 ArrayList底層採用的是陣列:查詢慢,增刪快 4.ArrayList<T>和 HashSet<T>,HashMap<K,V> 常用的方法總結: 4.1ArrayList:
boolean add(E e) 將指定的元素新增到此列表的尾部。
 
void add(int index, E element) 將指定的元素插入此列表中的指定位置。
 
boolean contains(Object o) 如果此列表中包含指定的元素,則返回 true
void clear() 移除此列表中的所有元素。
boolean remove(Object o)移除此列表中首次出現的指定元素(如果存在)。
E set(int index, E element用指定的元素替代此列表中指定位置上的元素。
Object[] toArray() 按適當順序(從第一個到最後一個元素)返回包含此列表中所有元素的陣列。
E get(int index)返回此列表中指定位置上的元素。
      4.2LinkedList:基本的方法和 ArrayList 相同都是實現 Collection 中的方法 特有的方法:
Object[] toArray()按適當順序(從第一個到最後一個元素)返回包含此列表中所有元素的陣列。
E getLast() 返回此列表的最後一個元素
 
int indexOf(Object o) 返回此列表中首次出現的指定元素的索引,如果此列表中不包含該元素,則返回 -1。
int lastIndexOf(Object o)返回此列表中最後出現的指定元素的索引,如果此列表中不包含該元素,則返回 -1。
boolean offerFirst(E e) 在此列表的開頭插入指定的元素。
E pop() 從此列表所表示的堆疊處彈出一個元素。
void push(E e)將元素推入此列表所表示的堆疊
  4.3 HashSet<T>方法:和 Collection 相同 4.4HashMap<K,V>方法:實現的 Map 介面中的方法
V get(Object key)通過鍵來找值,沒有返回null
boolean isEmpty()如果map為空則返回 true。
Set<K> keySet()返回此對映中所包含的鍵的 Set 集合,foreach獲取每個鍵,通過Map的get()方法找對應的值
V put(K key, V value)新增鍵值對,如果已經包含了該鍵,則就是修改鍵的內容
V remove(Object key)從此對映中移除指定鍵的對映關係(如果存在)。並且返回被移除的value值
Set<K,V> entrySet()獲取map中的鍵值對
  5.Collections工具類: 5.1:
static sort(List<T> list, Comparator<? super T> c)根據指定比較器產生的順序對指定列表進行排序。
<T> void
Sort()方法只能用於 List 集合中 , 一般的包裝型別的直接 sort(List<T>) 將按照自然 ( 字母或者數字 ) 的升序排列,不能比較中文。 當T是自定義型別時,需要該類實現 Comparable 介面並且實現其中的 CompareTo() 方法,在方法中新增比較的規則。 5.2
static void shuffle(List<?> list) 隨機打亂集合中元素的順序
6.三種集合的遍歷總結: ArrayList<T> list = new ArrayList<T>; 第一種方式:增強for迴圈 for(T t: list){ 直接得到t; } 第二種方式:Iterator 迭代器 和 ListIterator 迭代器 Iterator 迭代器中不能併發修改集合 ListIterator 迭代器有 add 方法可以併發修改集合 Iterator<T>  iterator = list.iterator(); While(iterator.hashNext()){ Iterator.next(); } HashSet<T> 同上 HashMap<K,V>的遍歷的兩種方式: 1.通過鍵找值:使用Set<K> keySet<>;方法獲取 map 集合中所有的 Key 值,再增強 for 迴圈遍歷得每個 key ,通過 get(key) 獲得對應的值 Set<String> keySet  = map .keySet(); for  (String key  : keySet ) { System. out .println( key  + "="  + map .get( key )); } 2.一次獲取key和 value :使用 entrySet() 方法同時獲取鍵值對,遍歷獲取每個鍵和值 Set<Entry<String, HashMap<String, String>>> entrySet  = map .entrySet();
for  (Entry<String, HashMap<String, String>> entry  : entrySet ) { System. out .println( entry .getKey()+ "=" + entry .getValue()); }