1. 程式人生 > >java集合基礎篇 簡單總結

java集合基礎篇 簡單總結

log 轉型 first exceptio set lin 一個隊列 left 刪除

昨天晚上看了編程思想4的持有對象,所以把學到看到的一些記記背背的方面給總結一下。

java的容器主要分為兩類,一個是實現了接口Collection的一類,還有一個是實現了Map接口的一類。

繼承Collction接口的主要有ListSet接口還有QueueCollection繼承了Iterator接口,讓實現類可以foreach遍歷。

繼承List接口的主要是ArrayListLinkedList

ArrayList的優勢在於隨機訪問,LinkedList的優勢則是更好的插入刪除,另外LinkedList還實現了Queue接口,這讓LinkedList

可以當成一個隊列的數據結構使用

List的方法(參數不寫):

1、contains() 用來確認List中是不是有某個對象 (還有containsAll() 方法)

2、 add() 添加一個對象 (還有addAll() 方法)

3、 get() 根據傳入的位置獲取一個對象

4、remove() 用來移除List中某個對象 (還有removeAll() 方法)

5、indexOf() 返回某個對象在List中的位置

6、subList() 截取List集合中的一部分並返回

7、sort() 對List集合進行排序

8、retainAll() 計算和傳入的Collection集合的交集,返回boolean,交集結果保存在List中

9 、set() 修改List集合中某個位置上的對象

10、isEmpty() 判斷List集合是不是空

11、clear() 清空List集合

12、 toArray() 根據傳入參數生成一個指定類型的數組,不傳參默認是Object類型數組

13、 size() 計算List集合的長度

註 :以上需要比較的操作,對於傳入的對象,都是使用傳入的對象參數的equals方法和集合中的對象比較

ListIterator

Iterator遍歷一個集合,只能向前遍歷( hasNext(), next() ),而ListIterator可以具備雙向索引,不過ListIterator只能作用於List

LinkedList實現了List的接口,同時又實現了Queue接口

1、getFirst() element() 兩者都是返回列表中的第一個元素,如果是空,拋出異常 NoSuchElementException

2、peek() 返回列表中的第一個元素,如果是空,返回null

3、removeFirst() 刪除列表中的第一個元素,如果是空,拋出異常 NoSuchElementException (空參的remove()方法同樣)

4、poll() 刪除列表中的第一個元素,如果是空,返回null

5、add() addFirst() addLast() 向列表頭(尾)添加元素

6、offer() offerFirst() offerLast() 向列表頭(尾)添加元素

offer和add的區別在於操作一個有容量限制的隊列,前者失敗後返回一個false,後者拋出一個異常

除了隊列之外,LinkedList同樣可以作為Stack棧來使用 (這裏的Stack指的是數據結構,不是java中的Stack類,LinkedList和Stack沒有繼承關系)

7、push() 向頂部添加一個對象

8、pop() 移除一個頂部對象並返回這個對象

不同於List集合,Set集合不同存放重復的元素,Set的接口和Collection接口字段方法一樣,Set集合的實現主要有HashSetTreeSetLinkedHashSetHashSet使用的是散列、TreeSet使用的是紅黑樹的數據結構,LinkedHashSet也用散列,還用鏈表保持位置順序。因此這三種結構的區別就是HashSet擁有最快的查詢速度,有時有序,但不保證一直有序。TreeSet始終處於排序的狀態。LinkedHashSet保持元素的插入順序同時也具有快速的訪問能力。

Collection集合系列還有一個Queue,Queue除了LinkedList的實現之外,還具有一個PriorityQueue的實現。PriorityQueue隊列中可以根據一個彈出隊列優先順序的規則來彈出元素。這個規則需要自己定義,方法是比如PriorityQueue集合中存的是Student類, 定義Student類的時候去實現一個Compareble接口,在一個int類型返回值Object參數的compareTo方法中去自定義規則,把傳入的Object參數(先轉型成Student)和當前Student類的某個字段比較,返回-1說明比當前Student後彈出,返回1先彈出(還有一個0自己體會)

Map接口實現和Set相似,三個實現類HashMapTreeMapLinkedHashMap,功能特點也和Set相似。MapCollection是平行關系,也並沒有繼承Iterator接口,不過Map可以通過keySet()方法將鍵轉化成Set遍歷,或者通過EntrySet()轉化成Entry的Set對象遍歷

java集合基礎篇 簡單總結