歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Java集合框架之Collection接口

Java是一門面向對象的語言,那麼我們寫程序的時候最經常操作的便是對象了,為此,Java提供了一些專門用來處理對象的類庫,這些類庫的集合我們稱之為集合框架。Java集合工具包位於Java.util包下,包含了很多常用的數據結構,如數組、鏈表、棧、隊列、集合、哈希表等。學習Java集合框架下大致可以分為如下五個部分:List列表、Set集合、Map映射、迭代器(Iterator、Enumeration)、工具類(Arrays、Collections)。

Java的集合類主要由兩個接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,這兩個接口又包含了一些接口或實現類。

可以看到Collection並沒有直接實現類,而是提供更具體的子接口實現。通過查詢API,可以總結出Collection的基本功能。

1、添加

boolean add(E e):添加一個元素

boolean addAll(Collection<? extends E> c):添加一個集合的元素

示例代碼

 1 package collection;
 2 
 3 import java.util.ArrayList;
 4 import java.util.Collection;
 5 
 6 public class CollectionDemo1 {
 7     public static void main(String[] args) {
 8         Collection collection1 = new ArrayList(); // Collection是接口,實例化其子類
 9         collection1.add("紅樓夢");
10         collection1.add("三國演義");
11         System.out.println(collection1);
12 
13         Collection collection2 = new ArrayList();
14         collection2.add("西游記");
15         collection2.add("水浒傳");
16 
17         collection1.add(collection2);
18         System.out.println(collection1);
19     }
20 }

輸出結果:

[紅樓夢, 三國演義]
[紅樓夢, 三國演義, [西游記, 水浒傳]]

2、刪除

void clear():清空集合中的所有元素

boolean remove(Object o):移除指定的元素

boolean removeAll(Collection<?> c):移除一個集合的元素

示例代碼

 1 package collection;
 2 
 3 import java.util.ArrayList;
 4 import java.util.Collection;
 5 
 6 public class CollectionDemo2 {
 7     public static void main(String[] args) {
 8         Collection collection1 = new ArrayList(); // Collection是接口,實例化其子類
 9         collection1.add("紅樓夢");
10         collection1.add("三國演義");
11         collection1.add("西游記");
12         collection1.add("水浒傳");
13         System.out.println("初始狀態:" + collection1);
14 
15         boolean b1 = collection1.remove("紅樓夢");
16         System.out.println("是否移除了元素:" + b1);
17         System.out.println("移除一個元素:" + collection1);
18         System.out.println();
19 
20         Collection collection2 = new ArrayList();
21         collection2.add("三國演義");
22         collection2.add("西游記");
23         collection2.add("平凡的世界");
24         boolean b2 = collection1.removeAll(collection2); // 移除兩個集合的交集,只要有一個元素被移除了,就返回true
25         System.out.println("移除一個集合:" + collection1);
26         System.out.println("是否移除了元素:" + b2);
27         System.out.println();
28 
29         Collection collection3 = new ArrayList();
30         collection3.add("平凡的世界");
31         collection3.add("圍城");
32         boolean b3 = collection1.removeAll(collection3);// 移除兩個集合的交集,只要有一個元素被移除了,就返回true
33         System.out.println("移除一個集合:" + collection1);
34         System.out.println("是否移除了元素:" + b3);
35         System.out.println();
36 
37         collection1.clear();
38         System.out.println("清除集合中的所有元素:" + collection1);
39     }
40 }

輸出結果

初始狀態:[紅樓夢, 三國演義, 西游記, 水浒傳]
是否移除了元素:true
移除一個元素:[三國演義, 西游記, 水浒傳]

移除一個集合:[水浒傳]
是否移除了元素:true

移除一個集合:[水浒傳]
是否移除了元素:false

清除集合中的所有元素:[]

3、判斷

boolean contains(Object o):判斷集合是否包含指定元素

boolean containsAll(Collection<?> c):判斷集合是否包含指定的集合元素

boolean isEmpty():判斷集合是否為空

示例代碼

 1 package collection;
 2 
 3 import java.util.ArrayList;
 4 import java.util.Collection;
 5 
 6 public class CollectionDemo3 {
 7     public static void main(String[] args) {
 8         Collection collection1 = new ArrayList(); // Collection是接口,實例化其子類
 9         collection1.add("紅樓夢");
10         collection1.add("三國演義");
11         collection1.add("西游記");
12         collection1.add("水浒傳");
13         System.out.println("是否包含紅樓夢:" + collection1.contains("紅樓夢"));
14 
15         Collection collection2 = new ArrayList();
16         collection2.add("三國演義");
17         collection2.add("西游記");
18         collection2.add("平凡的世界");
19         System.out.println("是否包含一個集合中元素:" + collection1.containsAll(collection2)); // 包含所有才包含
20 
21         System.out.println("集合是否為空:" + collection1.isEmpty());
22     }
23 }

輸出結果

是否包含紅樓夢:true
是否包含一個集合中元素:false
集合是否為空:false

4、獲取長度

int size():獲取集合中元素的個數

示例代碼

 1 package collection;
 2 
 3 import java.util.ArrayList;
 4 import java.util.Collection;
 5 
 6 public class CollectionDemo4 {
 7     public static void main(String[] args) {
 8         Collection collection = new ArrayList(); // Collection是接口,實例化其子類
 9         collection.add("紅樓夢");
10         collection.add("三國演義");
11         collection.add("西游記");
12         collection.add("水浒傳");
13         System.out.println("元素個數:" + collection.size());
14     }
15 }

輸出結果

元素個數:4

5、交集

boolean retainAll(Collection<?> c):保留此 collection 中那些也包含在指定 collection 的元素(可選操作)。換句話說,移除此 collection 中未包含在指定 collection 中的所有元素。

示例代碼

 1 package collection;
 2 
 3 import java.util.ArrayList;
 4 import java.util.Collection;
 5 
 6 public class CollectionDemo5 {
 7     public static void main(String[] args) {
 8         Collection collection1 = new ArrayList(); // Collection是接口,實例化其子類
 9         collection1.add("紅樓夢");
10         collection1.add("三國演義");
11         collection1.add("西游記");
12         collection1.add("水浒傳");
13 
14         Collection collection2 = new ArrayList();
15         collection2.add("西游記");
16         collection2.add("水浒傳");
17         System.out.println(collection1.retainAll(collection2));
18         System.out.println("collection1:" + collection1);
19         System.out.println("collection2:" + collection2);
20 
21         Collection collection3 = new ArrayList();
22         collection3.add("西游記");
23         collection3.add("平凡的世界");
24         System.out.println(collection1.retainAll(collection3));
25         System.out.println("collection1: " + collection1);
26         System.out.println("collection2: " + collection2);
27     }
28 }

輸出結果

true
collection1:[西游記, 水浒傳]
collection2:[西游記, 水浒傳]
true
collection1: [西游記]
collection2: [西游記, 水浒傳]

從上面結果分析得知,collection1集合與collection2集合做交集運算,最後的結果保留在collection1中,而collection2中的元素保持不變。

6、集合轉數組

Object[] toArray():集合轉數組

示例代碼

 1 package collection;
 2 
 3 import java.util.ArrayList;
 4 import java.util.Collection;
 5 
 6 public class CollectionDemo6 {
 7     public static void main(String[] args) {
 8         Collection collection = new ArrayList(); // Collection是接口,實例化其子類
 9         collection.add("紅樓夢");
10         collection.add("三國演義");
11         collection.add("西游記");
12         collection.add("水浒傳");
13 
14         Object[] objects = collection.toArray();
15 
16         for (Object object : objects) {
17             System.out.println(object);
18         }
19     }
20 }

輸出結果

紅樓夢
三國演義
西游記
水浒傳

7、遍歷

Iterator<E> iterator():返回在此 collection 的元素上進行迭代的迭代器,迭代器是集合特有的遍歷方式

其中Iterator是一個接口,其有3個方法

boolean hasNext():如果仍有元素可以迭代,則返回 true。

E next():返回迭代的下一個元素,並移動到下一個位置。

void remove():從迭代器指向的 collection 中移除迭代器返回的最後一個元素

示例代碼

 1 package collection;
 2 
 3 import java.util.ArrayList;
 4 import java.util.Collection;
 5 import java.util.Iterator;
 6 
 7 public class CollectionDemo7 {
 8     public static void main(String[] args) {
 9         Collection collection = new ArrayList(); // Collection是接口,實例化其子類
10         collection.add("紅樓夢");
11         collection.add("三國演義");
12         collection.add("西游記");
13         collection.add("水浒傳");
14 
15         Iterator it = collection.iterator();
16 
17         while (it.hasNext()) {
18             Object object = it.next();
19             System.out.println(object);
20         }
21 
22         it.remove(); // 如果未調用next方法,則會拋出IllegalStateException異常
23         System.out.println(collection);
24     }
25 }

輸出結果

紅樓夢
三國演義
西游記
水浒傳
[紅樓夢, 三國演義, 西游記]

至此,Collection接口的方法介紹完畢。

Copyright © Linux教程網 All Rights Reserved