Java集合框架之Collection介面

来源:http://www.cnblogs.com/huangminwen/archive/2016/12/21/6208428.html
-Advertisement-
Play Games

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


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介面的方法介紹完畢。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 隨著公司業務的發展,網站的日活數也逐漸增多,以前只需要考慮將所需要的功能實現就行了,當日活越來越大的時候,就需要考慮對伺服器的資源使用消耗情況有一個清楚的認知。 最近老是發現資料庫的連接數如果幾天不重啟伺服器,就經常會發現有很多sleep很久的資料庫連接,對資料庫伺服器的性能有較大的影響。所以需要知 ...
  • 一.簡介 在網頁應用中,你經常需要在處理完表單或其它類型的用戶輸入後,顯示一個通知消息(也叫做“flash message”)給用戶 對於這個功能,Django 提供基於Cookie 和會話的消息,無論是匿名用戶還是認證的用戶。 其消息框架允許你臨時將消息存儲在請求中,併在接下來的請求(通常就是下一 ...
  • 線程可以理解為下載的通道,一個線程就是一個文件的下載通道,多線程也就是同時開啟好幾個下載通道。當伺服器提供下載服務時,使用下載者是共用帶寬的,在優先順序相同的情況下,總伺服器會對總下載線程進行平均分配。不難理解,如果你線程多的話,那下載的越快。 現流行的下載軟體都支持多線程,且支持中途暫停下載,再次開 ...
  • 如果運行後如圖的錯,需要進行如下操作來解決: a:打開cmd,輸入netstat -ano 找到本地地址為8080的最後一項的數字,這個數字就是埠號。 b:再輸入taskkill /t /pid 埠號數字 /f 來關閉此進程。 c:註意每個命令後面不要加 ; 結尾,運行以上命令再重新運行工程即可 ...
  • 本文地址 可以拜讀: 從零開始學 Java 分享提綱: 1.java數據結構 1. java數據結構 1)【概述】 Java工具包提供了強大的數據結構。在Java中的數據結構主要包括以下幾種介面和類: 枚舉(Enumeration) 位集合(BitSet) 向量(Vector) 棧(Stack) 字 ...
  • 1、sdk返回值不是int型 1.1 登錄函數調用 def login(ip, port, username, password, device_info, error_code):"""LLONG CLIENT_Login(char *pchDVRIP, WORD wDVRPort,char *p... ...
  • 其實也沒啥好說的 用樹狀數組可以O(logn)的查詢 套一層整體二分就可以做到O(nlngn) 最後用樹鏈剖分讓序列上樹 ...
  • 這裡給大家詳細說一下Maven的運行機制,讓大家不僅知其然,更知其所以然。 1.插件保存在哪裡? 與我們所依賴的構件一樣,插件也是基於坐標保存在我們的Maven倉庫當中的。在用到插件的時候會先從本地倉庫查找插件,如果本地倉庫沒有則從遠程倉庫查找插件並下載到本地倉庫。 與普通的依賴構件不同的是,Mav ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...