java基礎(三)集合、容器
容器
1.Java 所提供的一系列類的例項,用於在程式中存放物件;容器的api位於java.util包內;
Collection
Set(資料物件沒有順序且不可以重複)
HashSet
List(資料物件有順序可重複)
LinkedList
ArrayList
Map
HashMap
2.方法:
size();長度
contains(Object element);是不是包含;
add();新增
remove();去除;
conrainsAll();是不是全部包含
retainAll
集合
--collection 集合中(介面--協議) Iterator 迭代器 遍歷集合
儲存的是元素 是以個為單位
List(保證順序,元素可重複)
--Vector
--ArrayList
set(集,模擬的就是數學中的集合),不保證順序,元素不重複
queue佇列
--map(介面--協議) 集合中
儲存的是鍵值對
HashMap
TreeMap
--Comparable
--Comparater 這兩個是用來比較的介面
-----------------------------------------------------------------------------------------------------------------
--Vector類(底層是Object[]陣列,根據里氏代換原則該容器什麼都可以放)--並且是有順序的
--capacity()可檢視容量大小
--add(Object e)想容器中新增元素
--addElement(Object e)向容器中新增元素
--get(index)根據下標獲取元素--並且返回的是一個Object型別
--set(index, element)修改某個下標的某個元素
--remove(index)根據下標刪除某個元素
-------------------------------------------------------------------------------------------------------------------
--型別轉換
--向上轉型,從右邊往左邊看是向上轉型,jvm自動轉換
--向下轉型:強制型別轉換,向下轉型.
------------------------------------------------------------------------------------------------------------------
--ArrayList類-----插入/刪除元素效率低
--size() 返回list中的元素個數
--add() 在list的末尾新增元素
--get() 通過下標來查詢一個元素
--remove() 刪除某個元素,引數可以是下標也可以是元素名
--set(index, element) 修改某個元素.
--indexOf() 從列表中尋找一個元素,如果能找到返回1 如果找不到的話返回-1
--lastIndexOf() 從後往前找
--add(index, element) 按照索引值插入一個元素
--clear() 清空list中的所有內容
--contains("123")查詢list中是否包含123字串,返回結果是一個boolean型別
--toArray()將list轉換成一個數組
--addAll() 將另一個list全部新增到另一list中
--addAll(index, list) 將另一個list全部插入到另一個list中
------------------------------------------------------------------------------------------------------------------
--list集合的遍歷
--普通for迴圈遍歷集合
for(int i=0; i<list.size(); i++)
--增強for迴圈
for(String s:list2)
--用迭代器遍歷
--hasNext()------檢視是否還有元素可以迭代,有則返回true
--next()--------返回迭代的下一個元素
--remove()-------從迭代器指向collection中溢位迭代器返回的最後一個元素
Iterator<String> it = list.iterator();
while(it.hasNext){
String s = it.next();
syso(s);
}
------------------------------------------------------------------------------------------------------------------
--linkedList---------遍歷速度比較慢
--addFirst() 將制定元素插入到列表的開頭
--addLast() 將指定元素插入到列表的結尾
--offerFirst() 將指定元素新增到列表的第一個
--offerLast() 將指定元素新增到列表的最後一個
--getFirst() 返回此列表的第一個元素
--getLast() 返回此列表的最後一個元素
--size() 返回list中的元素個數
--add() 在list的末尾新增元素
--get() 通過下標來查詢一個元素
--remove() 刪除某個元素,引數可以是下標也可以是元素名
--set(index, element) 修改某個元素.
--indexOf() 從列表中尋找一個元素,如果能找到返回1 如果找不到的話返回-1
--lastIndexOf() 從後往前找
--add(index, element) 按照索引值插入一個元素
--clear() 清空list中的所有內容
--contains("123")查詢list中是否包含123字串,返回結果是一個boolean型別
--toArray()將list轉換成一個數組
--addAll() 將另一個list全部新增到另一list中
--addAll(index, list) 將另一個list全部插入到另一個list中
--peekFirst() 檢視第一個元素並且不刪除
--pollFirst() 檢視第一個元素之後刪除該元素
-----------------------------------------------------------------------------------------------------------------
--Stack棧(堆疊)----父類是Vector---該類表示後進先出,
--push() 壓棧
--peek() 檢視元素
--pop() 溢位棧頂的物件,並作為函式的值返回物件
--empty() 測試堆疊是否為空
--search() 返回物件在堆疊中的位置以 1 位基數
Stack<E> bulletBox = new Stack();
bulletBox.push("元素一")
Iterator it = bulletBox.iterator();
while(it.hasNext){
syso(bulletBox.pop());
}
----------------------------------------------------------------------------------------------------------------
--ArrayBlockingQueue 佇列---先進先出---一個典型的有界快取區,固定大小的陣列在其中保持生產者插入的元素和使用這提取的元素,一旦建立了這樣的快取區,就不能再增加其容量,試圖向已滿的佇列中放入元素會導致操作受到阻塞,試圖從空佇列中提取元素將導致類似的阻塞.
--構造方法需要指定佇列的大小 new ArrayBlockingQueue<>(6);
--add()新增一個元素,當佇列已滿,該方法會丟擲異常,通過異常來導致新增失敗
--offer() 新增一個元素,當佇列已滿,該方法會返回一個特殊值(true/false),不會丟擲異常.
.....
----------------------------------------------------------------------------------------------------------------
--HashMap<K, V>--鍵值對,一個對映不能包含重複的鍵,每個鍵最多隻能有一個值,無序,底層是
陣列,鍵值對中鍵比較重要,值算是附屬,map中的排序是根據key的hashcode值來排序,
--put(" key","value ") 增加一個鍵值對
--get(key) 返回指定鍵的值
--clear() 清空所有鍵值對
--entrySet() 返回map中包含對映關係的Set檢視
--Set<Entry<K, V>> set = map.entrySet();
--getKey() 返回對應的鍵
--getValue() 返回對應的值
--hashCode() 返回此對映雜湊碼
--setValue() 用指定的值替換對應的值
--containsKey(key) 判斷是否包含某個鍵
--containsValue(vaule) 判斷是夠包含某個值
--isEmpty() 判斷map 是否為空
--remove(key) 根據鍵刪除一對資料----返回值的內容
--size() 返回map中有多少對
--keySet() 獲取map中所有的鍵
--Values() 獲取map中所有的值
--map本身不能使用迭代器
Set<String> keyis = map.keySet();
keyis.iterator()
-------------------------------------------------------------------------------------------------------------
--TreeMap<>---該集合中的排序是根據key來排序--跟據鍵的自然排序---或者根據建立對映時
提供的comparator來進行排序.---一個要是實現Compara介面便可以呼叫compareTo排序
--put(" key","value ") 增加一個鍵值對
--get(key) 返回指定鍵的值
--clear() 清空所有鍵值對
--entrySet() 返回map中包含對映關係的Set檢視
--Set<Entry<K, V>> set = map.entrySet();
--getKey() 返回對應的鍵
--getValue() 返回對應的值
--hashCode() 返回此對映雜湊碼
--setValue() 用指定的值替換對應的值
--containsKey(key) 判斷是否包含某個鍵
--containsValue(vaule) 判斷是夠包含某個值
--isEmpty() 判斷map 是否為空
--remove(key) 根據鍵刪除一對資料----返回值的內容
--size() 返回map中有多少對
--keySet() 獲取map中所有的鍵
--Values() 獲取map中所有的值
--map本身不能使用迭代器
Set<String> keyis = map.keySet();
keyis.iterator()
-------------------------------------------------------------------------------------------------------------------
--HashSet--底層是HashMap------一個不包含重複元素的collection,
--add() 新增一個元素
--底層使用put()將新增的元素作為map的key,value為PRESENT常量
......
-----------------------------------------------------------------------------------------------------------------
--TreeSet--底層是TreeMap--使用元素的自然順序對元素進行排序,或者根據建立SET時提供的comparator進行排序,具體取決於使用的方法.