天天看點

java collections介紹_Java Collection、Map、 Collections 介紹及差別

Java 中有兩個合集父接口 Collection、Map,Collection 類型每個集合容器中隻有一個元素,Map類型每個集合容器中有兩個 key-value ,類似一個 No Sql。而 Collections 更像一個工具類,與前面兩個不是一個性質。

1 Collection 接口類

Collection 即 java.util.Collection 是一個集合接口。它提供了對集合對象進行基本操作的通用接口方法。Collection 接口在 Java 類庫中有很多具體的實作。Collection 接口的意義是為各種具體的集合提供了最大化的統一操作方式。

例如我們常用的 map,set,list,vector 都是繼承了 Collection

1.1 Collection 的父類

Collection 是 Iterable 類的擴充(extends),Iterable 類的所有的方法,Collection 都繼承,都是可直接使用。

+Collection 這個接口extends自 --java.lang.Iterable接口

+List 接口

-ArrayList 類

-LinkedList 類

-Vector 類 此類是實作同步的

+Queue 接口

+不常用,在此不表.

+Set 接口

+SortedSet 接口

-TreeSet 類

-HashSet

1.2 Collection 方法與實作

Collection 本身是一個接口,他的具體方法的實作都在他的子類中實作。

方法名

說明

boolean add(E e)

向集合添加元素e,若指定集合元素改變了則傳回true

boolean addAll(Collection extends E> c)

把集合C中的元素全部添加到集合中,若指定集合元素改變傳回true

void clear()

清空所有集合元素

boolean contains(Object o)

判斷指定集合是否包含對象o

boolean containsAll(Collection> c)

判斷指定集合是否包含集合c的所有元素

boolean isEmpty()

判斷指定集合的元素size是否為0

boolean remove(Object o)

删除集合中的元素對象o,若集合有多個o元素,則隻會删除第一個元素

boolean removeAll(Collection> c)

删除指定集合包含集合c的元素

boolean retainAll(Collection> c)

從指定集合中保留包含集合c的元素,其他元素則删除

int size()

集合的元素個數

T[] toArray(T[] a)

将集合轉換為T類型的數組

1.2.1 add

可以添加不同類型的對象。

//add 方法

Collection collection = new ArrayList();

collection.add("增加元素1,隻能是單一進制素");

ArrayList arrayList = new ArrayList();

arrayList.add("增加元素1,隻能是單一進制素");

List list = new ArrayList<>();

list.add("增加元素1,隻能是單一進制素");

Collection coll = new HashSet<>();

coll.add("增加元素1");

1.2.2 addAll

//add 方法可以增加重複相同元素、可以增加不同類型的元素

Collection collection = new ArrayList();

collection.add("增加元素1,隻能是單一進制素");

collection.add("增加元素2");

Collection coll = new HashSet<>();

coll.add("增加元素1");

coll.add("相同元素");

coll.add("相同元素");

coll.add("相同元素");

coll.add("相同元素");

//addAll

// 添加一個集合資料

collection.addAll(coll);

1.2.3 contains 是否包含

//contains 是否包含

boolean a= coll.contains("A");

boolean b = coll.contains("相同元素");

1.2.4 remove 删除指定元素

coll.remove("相同元素");

collection.removeAll(coll);

1.2.5 removeAll 删除指定集合

collection.removeAll(coll);

1.2.6 周遊的4種方法

//周遊 for (常用)

for (String str: coll

) {

System.out.println(str);

}

//周遊 forEach (Java 8 及以上版本)

coll.forEach(e->System.out.println(e));

//周遊 使用 Iterator hasNext

Iterator it=coll.iterator();

while (it.hasNext()){

String str=it.next();

System.out.println(str);

}

//周遊 利用 Iterator 的 forEachRemaining (Java 8 及以上版本)

it.forEachRemaining(str->System.out.println(str));

1.2.6 Java8 謂詞(predicate)lambda表達式操作

//predicate 操作

Collection coll2 = new ArrayList<>();

// 添加0-49

for (int i = 0; i < 50; i++) {

coll2.add(i);

}

coll2.removeIf(e->(e>8 && e<20));

1.2.7 Java8 Stream 流操作

暫無

2 Map 接口類

Map 在 Java 中表示為鍵值對存儲結構 Map,他的常用方法包括了

get(Object key) 擷取指定鍵(key)所對應的值(value)

put(K key,V value) 将指定的鍵與值對應起來,并添加到集合中

remove(Object key) 根據指定的鍵(key)删除元素,傳回被删除元素的值(value)。

+Map 接口

-HashMap 類 (除了不同步和允許使用 null 鍵/值之外,與 Hashtable 大緻相同.)

-Hashtable 類 此類是實作同步的,不允許使用 null 鍵值

+SortedMap 接口

-TreeMap 類

2.1 Map 周遊

方法1 在for循環中使用entries實作Map的周遊

System.out.println("方法1-----------------------------");

Map map = new HashMap();

map.put("car1", "red");

map.put("car2", "yellow");

map.put("car3", "blue");

for(Map.Entry entry : map.entrySet()){

String mapKey = entry.getKey();

String mapValue = entry.getValue();

System.out.println(mapKey+":"+mapValue);

}

方法2 在for循環中周遊key或者values

System.out.println("方法2-----------------------------");

for(String key : map.keySet()){

System.out.println(key);

}

for(String value : map.values()){

System.out.println(value);

}

方法3 通過Iterator周遊

System.out.println("方法3-----------------------------");

Iterator> entries = map.entrySet().iterator();

while(entries.hasNext()){

Map.Entry entry = entries.next();

String key = entry.getKey();

String value = entry.getValue();

System.out.println(key+":"+value);

}

3 Collections 幫助類

Collections 即 java.util.Collections 是一個包裝類,它包含有各種有關集合操作的靜态多态方法。此類不能執行個體化,就像一個工具類,服務于Java 的 Collection 架構。

3.1 sort(Listlist) 對集合進行排序

對已知集合 Collection 按照自然順序排序

List coll2 = new ArrayList<>();

// 添加0-49

coll2.add(12);

coll2.add(3);

coll2.add(2);

coll2.add(4);

coll2.add(5);

coll2.add(89);

coll2.add(1);

coll2.add(2);

coll2.add(6);

coll2.forEach(e->System.out.println(e));

Collections.sort(coll2);

coll2.forEach(e->System.out.println(e));

3.2 reverse(Listlist) 反轉集合中元素的順序

List coll2 = new ArrayList<>();

// 添加0-49

coll2.add(12);

coll2.add(3);

coll2.add(2);

coll2.add(4);

coll2.add(5);

coll2.add(89);

coll2.add(1);

coll2.add(2);

coll2.add(6);

coll2.forEach(e->System.out.println(e));

Collections.sort(coll2);

coll2.forEach(e->System.out.println(e));

Collections.reverse(coll2);

3.3 shuffle(Collection) 對集合進行随機排序

Collections.shuffle(coll2);

Random random=new Random();

random.nextInt();

Collections.shuffle(coll2,random);