天天看點

【Java】對象群體的組織集合概覽Map

集合概覽

數組的優點

•是Java提供的随機通路對象序列的最有效方法

•是一個簡單的線性序列,通路元素的速度較快

•數組的缺點:大小自建立以後就固定了,在其整個生存期内其大小不可改變

•數組元素隻能是同一類型

集合(Collection)

•可動态改變其大小

•可在序列中存儲不同類型的資料

把具有相同性質的一類東西,彙聚成一個整體

•在Java2中有很多與集合有關的接口及類

•它們被組織在以Collection及Map接口為根的層次結構中,稱為集合架構

•在Java2之前,在Java 1.0/1.1中,沒有完整的集合架構。隻有一些簡單的可以自擴充的容器類

•Vector •Hashtable

簡單來說,集合就是用來存儲對象的容器

由來:

對象用于封裝特有資料,對象多了需要存儲,如果對象個數不确定,就用集合容器進行存儲

特點:

  1. 用于存儲對象的容器
  2. 集合長度是可變的
  3. 集合中不可以存儲基本資料類型

針對不同用途有不同容器,依據不同的用途用不同的容器

集合容器因為内部的資料結構不同,有多種具體容器。

不斷向上抽取,就形成了集合架構。

架構頂層Collection接口

常見方法:

  1. 添加

    boolean add(Object obj);

    boolean addAll(Collection coll);

public static void show(Collection coll){
	coll.add("abc");
	System.out.println(coll);
}
           
  1. 删除

    boolean remove (Object obj);

    boolean removeAll(Collection coll); //将兩個集合中的相同元素從調用removeAll的集合中删除

    void clear();

  2. 判斷

    boolean contains(Object obj);

    boolean containsAll(Collection coll);

    boolean ifEmpty();判斷集合中是否有元素

  3. 擷取

    int size();

    Iterator iterator();取出元素的方式:疊代器

Collection coll = new ArrayList();

coll.add("abc1");
coll.add("abc2");

Iterator it = coll.iterator();
//兩種方式:
//第一種方式:
while(it.hasNext()){
	System.out.println(it.next());
}

//第二種方法:
for(Iterator it = coll.iterator();it.hasNext();){
	System.out.println(it.next());
}


           

該對象必須依賴于具體容器,因為每一個容器的資料結構不同

是以該疊代器對象是在容器内部實作的

對于容器使用者而言,具體的實作不重要,值要通過容器擷取到該實作的疊代器對象即可,也就是iterator方法

Iterator接口就是對所有的Collection容器進行元素取出的公共接口

  1. 其他

    boolean retainAll(Collection coll);取交集

    Object[] toArray();将集合轉成數組

常用子接口

List和Set

List

有序的collection(也稱為序列),此接口的使用者可以對清單中每個元素的插入位置進行精準的控制。使用者可以根據元素的整數索引(在清單中的位置)通路元素,并搜尋清單中的元素

與set不同,元素可以重複

特有的常見方法:

有一個共性特點就是可以增加角标

  1. 添加
void add(index,element);
void add(index,collection);
           
  1. 删除
  1. 修改
  1. 擷取
Object get(index);

for(int i=0;i<list.size();i++){
	System.out.println(list.get(i));
}



int indexOf(object);
int lastIndexOf(object); 
List sublist(from,to);
           

在使用疊代器的時候不能進行集合操作,否則會造成并發錯誤

這時候我們需要使用iterator的子接口listIterator()方法,來完成疊代過程中對集合的操作

有三個常用對象:

  1. Vector:(内部是數組資料結構)可以實作可增長對象數組,Vector大小可以根據需要增大或縮小,以适應建立Vector後進行添加或移除項的操作
  2. ArrayList:内部是數組資料結構,是不同步的。替代了Vector。
  3. Linkedlist:内部是連結清單資料結構,是不同步的

Set

不包含重複元素,無序。

Map

一次添加一對元素

将鍵映射到對象,map集合必須保證鍵的唯一性

  1. 添加

    value put(key,value);