前幾日把集合陸續又回顧了一番,現在便嘗試總結一下,這種總結是對腦海中所有的關於集合的記憶及理解的組織、提取、凝練等;效果不用說自然是最好的;下面言歸正傳。
所謂集合,就像陣列一樣,是一類可以儲存資料的容器,不同於陣列的是,它可以儲存的資料型別必須是引用資料型別,若是將基本資料型別新增進去,亦不會報錯,因為這些基本資料型別會被自動裝箱。
集合中的兩大派系:單列集合的跟介面collection;雙列集合的跟介面map 。實現了collection介面的有分別有list介面、set介面;二者又各有其特點。
list集合:有索引、訪問順序一致、可以儲存重複元素;可以儲存空字串及null;它有arraylist、linkellist、vector三個實現類。 其中arraylist及vector底層都是由陣列實現的,也就是說集合中元素是被順序儲存的,所以它們的特點就是根據索引查詢較快,而插入及刪除資料較慢(因為無論是插入還是刪除都要將該位置後的元素向後或向前移動);不同的是,vector類是jdk1.0就出現的,而且是執行緒安全的,而arraylist是jdk1.2出現的,它是執行緒不同步的,所以效率就要比vector要高; linkedlist底層是由鍊錶實現的,也就是說集合中的元素是被鏈式儲存的,這也就決定了它的特點是插入和刪除元素較快,而查詢元素較慢,且該類是執行緒不安全的。其特有的方法如xxfirst();xxlast()等。
set集合:無索引、訪問順序不一致、不可儲存重複元素;也可以儲存空字串及null;它有hashset、linkedhashset、treeset三個實現類。這裡 主要論述set集合為何不能儲存重複元素,也就是其唯一性的原理。 hashset 能否實現元素唯一性取決於該型別元素是否重寫了hashcode()方法及equals()方法;這兩個方法均是object類中的方法,對於基本資料型別包裝類及string類均重寫了兩方法,但stringbuffer類並沒有重寫;hashset對兩方法的呼叫流程大概是這樣:每當執行add()方法新增元素時,會首先將該物件的hashcode()方法返回值與集合中已有的所有物件的hashcode()方法返回值進行比較;若相同,則呼叫equals()方法,equals()方法返回false則認為集合中沒有物件與要新增進去的物件相同,則儲存進去;若equals()方法返回ture,則認為集合中已有物件與要新增進去的物件相同,則不進行儲存;若hashcode值不同,則不呼叫equals()方法,直接 儲存進去,也就是說在自己重寫hashcode()方法時,同一型別的hashcode()方法返回值相同,且與其它型別不同,因為不同型別的物件根本沒有比較是否相同的必要。所以對於自定義資料型別,如果想儲存在hashset集合中,則必須重寫hashcode()、equals()兩方法才可以保證儲存該型別的物件不會重複。 linkedhashset是set集合派系中唯一可以保證訪問順序一致的集合,它就相當於在hashset基礎上擴充套件了乙個訪問有序的功能; treeset底層是二叉樹實現的,使用treeset集合儲存的某型別必須實現comparable介面或者comparator介面,否則在新增該型別的元素add()時會報classcastexception;類實現conparable介面,要重寫其compareto(t t)方法;實現comparator介面是作為實參傳入到treeset的有參構造方法中的,要重寫其compare(t t1,t t2)方法;該兩方法的返回值均是int型別,若返回值為正數,則將該物件放在最後乙個與該元素比較的元素右方;為負數則放在左方;為零則認為重複,不儲存。取出時按照中序排序。當呼叫add()方法時,要新增的物件就會相應的呼叫compareto()方法或compare()方法,進行篩選。
map是雙列結合的跟介面,它儲存key、value一對元素,key不能重複,且key-value要一一對應,它跟set集合十分相似,就不在贅述;其常用的方法是put(k k, v v)新增元素,containskey(k k);containsvalue(v v);v get(k k)返回key對應的value值;map.entryset entryset()得到乙個鍵值對集合;set keyset()得到主鍵的set集合。
java集合概述()
主要分為兩大類 collection和map collection介面實現了iterable介面 超級介面 iterable主要提供以下的方法 iterator iterator 返回乙個在一組 t 型別的元素上進行迭代的迭代器。collection介面主要提供以下方法 booleanadd e e...
Java集合框架概述
collection介面 第一組方法 boolean add object o 新增乙個元素 boolean remove object o 刪除乙個元素 iterator iterator 獲得此集合的迭代器,用來遍歷此集合的所有元素 boolean contains object o 判斷乙個元...
java集合框架概述(學習筆記)
1 集合概念 是一種工具類,是一種容器,儲存任意數量的具有共同屬性的物件。2 集合的作用 在類的內部,對資料進行組織 簡單而快速的搜尋大數量的條目 有的集合介面提供了一系列排列有序的元素,並且可以在序列中間快速的插入或者刪除有關元素。有的集合介面提供了對映關係,可以通過關鍵字去快速查詢到對應的唯一物...