1. 程式人生 > >java基礎(三)集合、容器

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進行排序,具體取決於使用的方法.