集合
*集合類的特點:提供一種儲存空間可變的儲存模式,儲存的資料容量可以隨時發生改變
*和陣列的區別:陣列是儲存同種資料型別、長度在定義後便不可變。
集合分為單列集合(collection)和雙列集合(map)
*collection集合的概述:是單列集合的頂層介面,它表示一組物件,這些物件也稱為collection的元素;jdk不提供此介面的任何直接實現,它提供更具體的子介面
(如set、list)實現
*collection常用的方法:新增元素boolean add()、移除boolean remove()、清空void clear()判斷集合是否存在某個元素boolean contains()、判斷集合是否為空boolean sempty()、獲取集合的長度int size()。
*collection集合的遍歷(迭代器)
**迭代器的介紹:是集合的專用遍歷方式,通過集合的iterator iterator()方法得到。
**併發修改異常:迭代遍歷過程中,通過集合物件修改集合中的元素比如增刪改查等操作,造成了迭代器獲取元素中判斷預期修改值和實際修改值不一致。
**解決方案:用for迴圈替代迭代器進行遍歷。可以簡單理解為迭代器在執行迴圈前獲得乙個資料值,在執行到此
collection集合按照不同的特點可分為兩類子集合list和set
*list集合
**list集合的特點:有序(元素的儲存順序一致)、有索引、可重複。
**list集合的常用方法:void add()、remove()、set()、get()。都是基於索引進行的增刪改查。
**列表迭代器:list集合的特有遍歷,通過listiterator()方法得到。主要用途是可以沿著任一方向進行遍歷,逆向方法hasprevious(),previous()。值得注意的是列表迭代器在迭代期間修改列表,返回迭代器的當前位置,所以在進行逆向遍歷前先進行正向遍歷。
**list集合的兩個實現類:
***arraylist:底層是陣列,查詢快,增刪慢,執行緒不同步,效率高。
***linkedlist:底層是鍊錶,增刪快,查詢慢,執行緒不同步,效率高。特有方法xxfirst()可以獲取(刪除,得到)列表的乙個元素,xxlast()同理。
*set集合
**set集合的特點:無序,無索引(所以沒有普通for迴圈),唯一(不可重複)
**雜湊值
***如何獲取雜湊值:通過object類中的hashcode():返回物件的雜湊值;
***雜湊值的特點:1、同乙個物件呼叫hashcode()方法返回的雜湊值是相同的;2、不同的物件可以通過重寫hashcode()方法得到相同的雜湊值。
**set集合的三個實現類:
***hashset:底層是雜湊表,無序,無索引(不能使用普通for),唯一。保證為唯一性的原理如下圖:
***linkedhashset:底層是雜湊表和煉表,有序,無索引,唯一。
***treeset:底層是二叉樹,有序(指按照一定規則排序),無索引,唯一。
****自然排序:實現compareable介面,複寫compareto方法,當主要條件相等時要比較次要元素,保證唯一性的語句是compareto方法return0
****比較器排序:當元素不具備比較性,或者具備的比較性不符合需求,那麼就讓集合自身具備比較性,定義乙個類實現compare介面,重寫compare()方法。
java學習之單列集合
陣列在儲存資料的時候是有固定長度,而且必須儲存同一種資料型別的資料,集合的出現就是為了補充這個不足的 集合分為單列集合 collection 和雙列集合 map 這兩個只是實現集合的兩個介面 介面的特點是不能用來建立物件,所以在實際的開發中他們只是用來作為父類出現 單列集合 collection 下...
JAVA單列集合
list e 介面 vector類 set e 介面 hashset e 類 例項treeset e 類 arraylist e 類 linkedlist 類 public class collection public static void demo9 public static void de...
java 單列集合複習
package cn.itcast.map 單例集合 的體系 collection 單例集合的根介面 list 如果是實現了list介面的集合類,具備的特點 有序,重複。arrarylist 底層 是使用了object陣列實現的,特點 查詢速度快,增刪慢。linkedlist 底層是使用了鍊錶資料結...