Java核心类库篇4——集合
生活随笔
收集整理的這篇文章主要介紹了
Java核心类库篇4——集合
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Java核心類庫篇4——集合
1、集合的意義
- 記錄單個數據內容時,則聲明一個變量
- 記錄多個類型相同的數據內容時,聲明一個一維數組
- 記錄多個類型不同的數據內容時,則創建一個對象
- 記錄多個類型相同的對象數據時,創建一個對象數組
- 記錄多個類型不同的對象數據時,則準備一個集合
2、集合的分類
- 單列集合(Collection)
- 雙列集合(Map)
3、Iterator接口
- java.util.Iterator接口主要用于描述迭代器對象,可以遍歷Collection集合中的所有元素
- java.util.Collection接口繼承Iterator接口,因此所有實現Collection接口的實現類都可以使用該迭 代器對象
| public boolean hasNext() | 判斷集合中是否有可以迭代/訪問的元素 |
| public E next() | 用于取出一個元素并指向下一個元素 |
| public void remove() | 用于刪除訪問到的最后一個元素 |
4、Collection
4.1、方法
| public boolean add(E e) | 向集合中添加對象 |
| public boolean addAll(Collection c) | 將參數指定集合c中的所有元素添加到當前集合 |
| public boolean contains(Object o) | 判斷是否包含指定對象 |
| public boolean containsAll(Collection c) | 判斷是否包含參數指定的所有對象 |
| public boolean retainAll(Collection c) | 保留當前集合中存在且參數集合中存在的所有對象 |
| public boolean remove(Object o) | 從集合中刪除對象 |
| public boolean removeAll(Collection c) | 從集合中刪除參數指定的所有對象 |
| public void clear() | 清空集合 |
| public int size() | 返回包含對象的個數 |
| public boolean isEmpty() | 判斷是否為空 |
| public Object[] toArray() | 將集合轉換為數組 |
| public Iterator iterator() | 獲取當前集合的迭代器 |
4.2、List
| public void add(int index, E element) | 向集合中指定位置添加元素 |
| public E get(int index) | 從集合中獲取指定位置元素 |
| public int indexOf(Object o) | 查找參數指定的對象 |
| public int lastIndexOf(Object o) | 反向查找參數指定的對象 |
| public E set(int index, E element) | 修改指定位置的元素 |
| public E remove(int index) | 刪除指定位置的元素 |
| public List subList(int fromIndex, int toIndex) | 用于獲取子List |
4.2.1、ArrayList
底層數據結構是數組,查詢快,增刪慢,線程不安全,效率高,可以存儲重復元素
4.2.2、LinkedList
底層數據結構是鏈表,查詢慢,增刪快,線程不安全,效率高,可以存儲重復元素
特殊方法
| public void addFirst(E e) | 在該列表開頭插入指定的元素 |
| public void addLast(E e) | 在該列表結尾插入指定的元素 |
| public E getFirst() | 返回此列表中的第一個元素 |
| public E getLast() | 返回此列表中的最后一個元素 |
4.2.3、Vector
底層數據結構是數組,查詢快,增刪慢,線程安全,效率低,可以存儲重復元素
特殊方法
| public void addElement(E obj) | 將指定的組件添加到此向量的末尾 |
| public E elementAt(int index) | 返回指定索引處的組件 |
| public Enumeration elements() | 返回此向量的組件的枚舉 |
4.3、Set
4.3.1、HashSet
采用哈希表實現,元素無序且唯一,線程不安全,效率高,可以存儲null元素
4.3.2、LinkedHashSet
采用鏈表和哈希表共同實現,鏈表保證了元素的順序與存儲順序一致,哈希表保證了元素的唯一性。線程不安全,效率高
4.3.3、TreeSet
采用二叉樹來實現,元素唯一且已經排好序;唯一性同樣需要重寫hashCode和equals()方法,二叉樹結構保證了元素的有序性
4.4、List和Set總結
- List特點:元素有放入順序,元素可重復
- Set特點:元素無放入順序,元素不可重復,重復元素會覆蓋掉,(注意:元素雖然無放入順序,但是元素在set中的位置是有該元素的HashCode決定的,其位置其實是固定的,加入Set 的Object必須定義equals()方法)
- list支持for循環,也就是通過下標來遍歷,也可以用迭代器
- set只能用迭代,因為他無序,無法用下標來取得想要的值
- Set:檢索元素效率低下,刪除和插入效率高,插入和刪除不會引起元素位置改變
- List:和數組類似,List可以動態增長,查找元素效率高,插入刪除元素效率低,因為會引起其他元素位置改變
5、Map
Map用于保存具有映射關系的數據,Map里保存著兩組數據:key和value,它們都可以使任何引用類型的數據,但key不能重復
5.1、方法
| public void clear() | 刪除所有的映射 |
| public boolean containsKey(Object key) | 判斷此映射是否包含指定鍵的映射 |
| public boolean containsValue(Object value) | 判斷此映射是否包含指定值的映射 |
| public Set<Map.Entry<K,V> entrySet() | Map中所包含的鍵值對所組成的set集合 |
| public V get(Object key) | 返回指定key所對應的value,如Map中不包含key則返回null |
| public boolean isEmpty() | 判斷map是否為空 |
| public Set keySet() | 返回該Map中所有key所組成的set集合 |
| public V put(K key, V value) | 向Map中添加一個元素 |
| public void putAll(Map<? extends K,? extends V> m) | 將指定Map的添加到當前Map |
| public V remove(Object key) | 從當前Map移除一個key |
| public int size() | Map的鍵值對的個數 |
| public Collection values() | 返回該Map里所有value組成的collection |
5.2、HashMap
- 線程不安全
- HashMap只可以有一個鍵位null
- HashMap可以有無數個鍵值為null
- 性能很好
5.3、HashTable
- 線程安全
- HashTable無論鍵值都不能為null
- 性能差
5.4、TreeMap
非線程安全基于紅黑樹實現
特殊方法
| public Map.Entry<K,V> firstEntry() | 最小key的鍵值對 |
| public K firstKey() | 最小的key |
| public K lastKey() | 最大的key |
| public K higherKey(K key) | 返回指定key后一位的鍵 |
| public K lowerKey(K key) | 返回指定key前一位的鍵 |
| public K higherEntry(K key) | 返回指定key后一位的鍵值對 |
| public K lowerEntry(K key) | 返回指定key前一位的鍵值對 |
5.5、Map的其他類
5.5.1、LinkedHashMap
- 使用雙向鏈表來維護鍵值對的次序
- 迭代順序與鍵值對的插入順序保持一致
- LinkedHashMap需要維護元素的插入順序,性能略低于HashMap,但在迭代訪問元素時有很好的性能,因為它是以鏈表來維護內部順序
5.5.2、IdentityHashMap
使用==判斷key是否相等
5.5.3、WeakHashMap
- WeakHashMap的key所引用的對象沒有被其他強引用變量所引用,則這些key所引用的對象可能被回收
- WeakHashMap中的每個key對象保存了實際對象的弱引用,當回收了該key所對應的實際對象后,WeakHashMap會自動刪除該key所對應的鍵值對
6、Collections
| public static > T max(Collection coll) | 根據元素的自然順序返回給定集合的最大元素 |
| public static T max(Collection coll, Comparator comp) | 根據指定比較器引發的順序返回給定集合的最大元素 |
| public static > T min(Collection coll) | 根據元素的自然順序返回給定集合的最小元素 |
| public static T min(Collection coll, Comparator comp) | 根據指定比較器引發的順序返回給定集合的最小元素 |
| public static void copy(List dest, List src) | 將一個列表中的所有元素復制到 另一個列表中 |
| public static void reverse(List list) | 反轉指定列表中元素的順序 |
| public static void shuffle(List list) | 使用默認的隨機源隨機置換指定的列表 |
| public static > void sort(List list) | 根據其元素的自然順序將指定列表按升序排序 |
| public static void sort(List list, Comparator c) | 根據指定比較器指定的順序對指定列表進行排序 |
| public static void swap(List list, int i, int j) | 交換指定列表中指定位置的元素 |
總結
以上是生活随笔為你收集整理的Java核心类库篇4——集合的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MATLAB利用串口接收数据,并实时显示
- 下一篇: c语言运算优先级记忆方法