Java集合類

1,集合類

      包含:set、list、map、queue四大體系。其中set代表無序、不可重複的集合;list代表有序、可重複的集合。map代表具有映射關係的集合;queue代表隊列集合。

      Java集合類與數組的區別:Java的集合類的長度是動態的,數組則是固定長度的。

     List、Set、Map接口及各實現類的特性

接口

特性

實現類

實現類特性

成員要求

List

線性、有序的存儲容器,可通過索引訪問元素

ArrayList

數組實現。非同步。

 

Vector

類似ArrayList,同步。

 

LinkedList

雙向鏈表。非同步。

 

Map

保存鍵值對成員

HashMap

基於哈希表的 Map 接口的實現,滿足通用需求

任意Object對象,如果修改了equals方法,需同時修改hashCode方法

TreeMap

默認根據自然順序進行排序,或者根據創建映射時提供的 Comparator進行排序

鍵成員要求實現caparable接口,或者使用Comparator構造TreeMap。鍵成員一般爲同一類型。

LinkedHashMap

類似於HashMap,但迭代遍歷時取得“鍵值對”的順序是其插入順序或者最近最少使用的次序

與HashMap相同

IdentityHashMap

使用==取代equals()對“鍵值”進行比較的散列映射

成員通過==判斷是否相等

WeakHashMap

弱鍵映射,允許釋放映射所指向的對象

 

ConcurrentHashMap

線性安全的Map

 

Set

成員不能重複

HashSet

爲快速查找設計的Set

元素必須定義hashCode()

TreeSet

保持次序的Set,底層爲樹結構

元素必須實現Comparable接口

LinkedHashSet

內部使用鏈表維護元素的順序(插入的次序)

元素必須定義hashCode()

2,List

      特有方法:

      (1)增加

void add(int index, E element):在列表的指定位置插入指定元素(可選操作)。

boolean addAll(int index, Collection<? extends E> c):將指定 collection中的所有元素都插入到列表中的指定位置(可選操作)。

      (2)刪除

boolean remove(Object o):從此列表中移除第一次出現的指定元素(如果存在)(可選操作)。

      (3)修改

E set(int index, E element):用指定元素替換列表中指定位置的元素(可選操作)。

      (4)查詢

E get(int index):返回列表中指定位置的元素。

List<E> subList(int fromIndex, int toIndex):返回列表中指定的fromIndex(包括 )和toIndex(不包括)之間的部分視圖。

ListIterator<E> listIterator():返回此列表元素的列表迭代器(按適當順序)。

      List集合特有迭代器:ListIteratorIterator的子接口。在迭代時,不可以通過集合對象的方法操作集合中的元素,因爲會發生ConcurrentModificationException異常。所以,在迭代時,只能用迭代器的放過操作元素,可是Iterator方法是有限的,只能對元素進行判斷,取出和刪除的操作。如果想要其他的操作如添加、修改等,就需要使用其子接口ListIterator,該接口只能通過List集合的ListIterator方法獲取。

運行示例:

public static void main(String[] args) {
  ArrayList al = new ArrayList();

  al.add("java0");
  al.add("java1");
  al.add("java2");
  al.add("java3");
  sop("原集合是:"+al);
  //演示列表迭代器
  ListIterator li = al.listIterator();
  while(li.hasNext()){
   Object o = li.next();
   if(o.equals("java2"))
    li.set("java5");
  }
  sop("修改後集合是:"+al);
 }

public static void sop(Object obj){
  System.out.println(obj);
 }

發佈了22 篇原創文章 · 獲贊 8 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章