定義:java中集合類:是一種工具類,就像是容器,儲存任意數量的具備共同屬性的對象java
一.List集合
1.List實現的超級父類接口:Collection算法
2.瞭解ArrayList類數組
A):定義的格式:Array<具體類型>集合名=new Array<具體類型>();框架
B):數據的儲存方式:底層仍是用數組儲存工具
C):對象的類型: 在List集合中,若是定義集合對象時沒有定義定義對象的類型,就表示什麼類型的對象均可以直接存儲到List集合中,若是想要運用裏面的元素,則須要用instanceof來判斷元素的類型。格式 :元素 instanceof 所判斷的類型;返回true或false。後續須要強轉。spa
D):集合的設計:泛型的方式進行類型指定,ArrayList<具體類型>設計
特色:元素有序、可重複,可變大小的容器code
遍歷:for循環便可對象
E):基本操做:blog
增長:集合名.add(元素); 加在集合最後,
集合名.add(數字,元素); 加載指定的位置
集合名.addAll(另外一個集合名); 加在最後
集合名.addAll(數字,另外一個集合名); 加載指定位置
刪除:集合名.remove(數字); 移去指定位置的元素
集合名.remove(元素); 移去集合中第一次出現的指定元素(若是存在)
集合名.removeALL(另外一個集合名); 移去另外一個集合中的全部元素
集合名.retaintALL(另外一個集合名); 僅保留另外一個集合中的全部元素
集合名.clear(); 清空集合
判斷/得到:集合名.get(數字); 得到指定位置的元素
集合名.contains(元素); 判斷集合是否包含該元素,是則返回true
集合名.contains(另外一個集合名); 判斷是否包含另外一個集合的全部元素
集合名.indexOf(元素); 返回該元素的索引,無則返回-1
集合名.equals(元素); 判斷該元素是否與集合的元素一致 返回true或false
改:集合名.set(數字,元素); 用該元素替換指定位置的元素
其它:集合名.size(); 獲取集合的大小
LinkedList:
一樣實現List接口的LinkedList與ArrayList不一樣,ArrayList是一個動態數組,而LinkedList是一個雙向鏈表。因此它除了有ArrayList的基本操做方法外還額外提供了get,remove,insert方法在LinkedList的首部或尾部。
因爲實現的方式不一樣,LinkedList不能隨機訪問,它全部的操做都是要按照雙重鏈表的須要執行。在列表中索引的操做將從開頭或結尾遍歷列表(從靠近指定索引的一端)。這樣作的好處就是能夠經過較低的代價在List中進行插入和刪除操做。
addFirst:在列表的首部添加元素
addLast:在列表末尾添加元素
getFirst:返回列表中的第一個元素
getLast:返回列表中最後一個元素
removeFirst:刪除並返回列表中的第一個元素
removeLast:刪除並返回列表中的最後一個元素
Java集合框架的體系結構:
二.Set接口:
一、Set實現的超級父類接口:Collection
二、瞭解HashSet類
A):定義的格式: HashSet<具體類型> 集合名 = HashSet<具體類型>();
B):數據的存儲方式:遵循Hash算法來存儲數據
C):對象的類型:必需要定義集合對象類型,不然會影響後續的使用
D):集合的設計:泛型的方式進行類型指定:HashSet<具體類型>
特色:元素無序、不可重複,可變大小的容器
注意:底層並不是真正的無序,遵循Hash算法來保證數據的存儲,可是咱們做爲使用者,就理解爲無序
遍歷:須要使用迭代器:Iterator<類型> 名稱 = 集合名.iterator();
E):基本操做:
增長:集合名.add(元素); 添加指定元素(以前集合不過包含的)
刪除:集合名.remove(元素); 移去指定的元素
集合名.clear(); 清空集合
判斷:集合名.containts(元素); 若是集合包含此元素,返回true
其它:集合名.size(); 得到集合的大小
Iterator<類型> 名稱 = 集合名.iterator(); 用於集合的遍歷
Set和List的區別
-
1. Set 接口實例存儲的是無序的,不重複的數據。List 接口實例存儲的是有序的,能夠重複的元素。
-
2. Set檢索效率低下,刪除和插入效率高,插入和刪除不會引發元素位置改變 <實現類有HashSet,TreeSet>。
-
3. List和數組相似,能夠動態增加,根據實際存儲的數據的長度自動增加List的長度。查找元素效率高,插入刪除效率低,由於會引發其餘元素位置改變 <實現類有ArrayList,LinkedList,Vector> 。
3、Map集合
一、Map沒有實現的超級父類接口,不是Collection的直接接口子類
二、瞭解HashMap類
A):定義的格式:HashMap<類型,類型> 集合名 = new HashMap<類型,類型>();
B):數據的存儲方法:key+value的存儲方式
C):對象的類型:必需要定義集合對象類型,不然會影響後續的使用
D)集合的設計:泛型的方式進行類型的指定:HashMap<具體類型>
特色:一條數據,是由兩部分組成:鍵和值,元素無序、不可重複, 可變大小的容器
遍歷:須要使用鍵的迭代器 Set<類型> 名稱1 = 集合名.keySet();
Iterator<類型> 名稱 = 名稱1.iterator();
E):基本操做
增長:集合名.put(鍵,值); 在此映射中關聯指定值與指定鍵(是put,不是add)
刪除:集合名.remove(鍵); 從映射中移除指定鍵的映射關係(若是存在)
判斷:集合名.containsKey(鍵); 若是此映射包含對於指定鍵的映射關係,返回true
集合名.containsValue(值); 若是此映射將一個或多個鍵映射到指定值,返回true
其它:集合名.size(); 得到集合的大小
注意:在Map集合中,一個鍵只能對應有一個值,但一個值能夠有多個鍵對應,若是說放(put)了一個相同的鍵到map中,則新元素會替換原來的元素,會把替換掉的元素返回出來,你能夠接收到,並作後續處理
hasNext和next方法:
boolean hasNext():判斷集合是否還有元素能夠遍歷
E next():返回迭代的下一個元素
Iterator:
iterator是一個接口,集合再覆蓋Collection的方法時提供迭代器的實現
import java.util.*; public class Test{ public static void main(String[] args) { List<String> list=new ArrayList<String>(); list.add("Hello"); list.add("World"); list.add("HAHAHAHA"); //第一種遍歷方法使用foreach遍歷List for (String str : list) { //也能夠改寫for(int i=0;i<list.size();i++)這種形式 System.out.println(str); } //第二種遍歷,把鏈表變爲數組相關的內容進行遍歷 String[] strArray=new String[list.size()]; list.toArray(strArray); for(int i=0;i<strArray.length;i++) //這裏也能夠改寫爲 foreach(String str:strArray)這種形式 { System.out.println(strArray[i]); } //第三種遍歷 使用迭代器進行相關遍歷 Iterator<String> ite=list.iterator(); while(ite.hasNext())//判斷下一個元素以後有值 { System.out.println(ite.next()); } } }