Java 集合框架繼承體系
先說點別的:
集合和陣列的區別:
集合:長度可變,集合儲存不同型別元素,集合只可以存引用型別。
陣列:陣列長度固定不可變,陣列儲存同一型別元素,陣列可以存基本型別,也可以存引用型別。
現在來說說繼承體系:(這個圖是重點,一定要熟記於心!!!!)
Collection和Map是同級關係。
現在來一步一步的看:
1:新增功能
boolean add(Object obj):新增一個元素
boolean addAll(Collection c):新增一個集合的元素
2:刪除功能
void clear():移除所有元素
boolean remove(Object o):移除一個元素
boolean removeAll(Collection c):移除一個集合的元素(是一個還是所有)
3:獲取功能
Iterator iterator()(重點)
4:判斷功能
boolean contains(Object o):判斷集合中是否包含指定的元素
boolean containsAll(Collection c):判斷集合中是否包含指定的集合元素(是一個還是所有)
boolean isEmpty():判斷集合是否為空
5:長度功能
int size():元素的個數
這塊有個面試題,可能會遇到,看到的小夥伴可以注意一下
{陣列有沒有length()方法呢?字串有沒有length()方法呢?集合有沒有length()方法呢?} 一定要記住哦!
陣列求長度用length屬性
字串求長度用length()方法
集合求長度用size()方法
二丶迭代器(集合獨有的遍歷方式)
用while Iterator iterator=collection.iterator(); while(iterator.hasNext()) { System.out.println(iterator.next()); } 用for迴圈 Iterator iterator=collection.iterator(); for(;iterator.hasNext;){ System.out.println(iterator.next()); }
List:
代表一個元素有序、且可重複的集合,集合中的每個元素都有其對應的順序索引
允許使用重複元素,可以通過索引來訪問指定位置的集合元素。
預設按元素的新增順序設定元素的索引。
package test1; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.junit.Test; public class TestList { //ArrayList是List的主要實現類 public void test() { List list=new ArrayList(); //新增元素 list.add("aaa"); list.add("bbb"); list.add("ccc"); list.add(123); System.out.println(list); //查詢 System.out.println(list.get(1)); //刪除 System.out.println(list.remove(1)); System.out.println(list.get(1)); //修改 list.set(0, 345); System.out.println(list.get(0)); } @Test public void test1() { List list=new ArrayList(); //新增元素 list.add("aaa"); list.add("bbb"); list.add("ccc"); list.add(123); //for迴圈 for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } System.out.println("========"); //foreach for (Object object : list) { System.out.println(object); } System.out.println("========"); //迭代器 Iterator i=list.iterator(); while (i.hasNext()) { System.out.println(i.next()); } } }
ArrayList:
底層資料結構是陣列,查詢快,增刪慢。 執行緒不安全,效率高。
Vector:
底層資料結構是陣列,查詢快,增刪慢。 執行緒安全,效率低。
LinkedList:
底層資料結構是連結串列,查詢慢,增刪快。 執行緒不安全,效率高。
Set:
無序(輸出的順序和插入的順序不一樣),不允許重複
hashset
不保證順序
底層資料結構是雜湊表
linkedhashset
底層是雜湊表加連結串列
雜湊表保證唯一性,連結串列保證有序
treeset
可以排序 使用元素自然排序排序
使用Comparator
Map 和collection的區別
map儲存元素是成對出現的,鍵是唯一的,值可重複
Collection儲存元素是單獨的
map集合的資料結構只針對鍵有效,和值無關
collection的資料結構針對元素有效
功能
Map集合的功能概述:
1:新增功能 V put(K key,V value):新增元素。這個其實還有另一個功能
如果鍵是第一次儲存,就直接儲存元素,返回null
如果鍵不是第一次存在,就用值把以前的值替換掉,返回以前的值
2:刪除功能 void clear():移除所有的鍵值對元素 V remove(Object key):根據鍵刪除鍵值對元素,並把值返回
3:判斷功能 boolean containsKey(Object key):判斷集合是否包含指定的鍵 boolean containsValue(Object value):判斷集合是否包含指定的值 boolean isEmpty():判斷集合是否為空
4:獲取功能 Set<map.entry<k,v>> entrySet():??? V get(Object key):根據鍵獲取值 Set keySet():獲取集合中所有鍵的集合 Collection values():獲取集合中所有值的集合
5:長度功能 int size():返回集合中的鍵值對的對數
hashmap
鍵是雜湊表結構,可以保證鍵的唯一性
LinekedHashMap Map 介面的雜湊表和連結列表實現,具有可預知的迭代順序。
TreeMap 鍵是紅黑樹結構,可以保證鍵的排序和唯一性
Collections
Collections:是針對集合進行操作的工具類,都是靜態方法。
面試題: Collection和Collections的區別?
Collection:是單列集合的頂層介面,有子介面List和Set。
Collections:是針對集合操作的工具類,有對集合進行排序和二分查詢的方法
要知道的方法
public static void sort(List list):排序 預設情況下是自然順序。
public static int binarySearch(List list,T key):二分查詢
public static T max(Collection coll):最大值
public static void reverse(List list):反轉
public static void shuffle(List list):隨機置換
HashMap和Hashtable的區別
map執行緒不安全的,效率高
table安全,低
List,Set,Map等介面是否都繼承子Map介面