Java集合大總結——Collections工具類

簡單闡述

參考操作數組的工具類:Arrays,Collections 是一個操作 Set、List 和 Map 等集合的工具類。

常用方法

Collections 中提供了一系列靜態的方法對集合元素進行排序、查詢和修改等操作,還提供了對集合對象設置不可變、對集合對象實現同步控制等方法(均為static方法):

排序操作:

  • reverse(List):反轉 List 中元素的順序
  • shuffle(List):對 List 集合元素進行隨機排序
  • sort(List):根據元素的自然順序對指定 List 集合元素按升序排序
  • sort(List,Comparator):根據指定的 Comparator 產生的順序對 List 集合元素進行排序
  • swap(List,int, int):將指定 list 集合中的 i 處元素和 j 處元素進行交換

查找

  • Object max(Collection):根據元素的自然順序,返回給定集合中的最大元素
  • Object max(Collection,Comparator):根據 Comparator 指定的順序,返回給定集合中的最大元素
  • Object min(Collection):根據元素的自然順序,返回給定集合中的最小元素
  • Object min(Collection,Comparator):根據 Comparator 指定的順序,返回給定集合中的最小元素
  • int binarySearch(List list,T key)在List集合中查找某個元素的下標,但是List的元素必須是T或T的子類對象,而且必須是可比較大小的,即支持自然排序的。而且集合也事先必須是有序的,否則結果不確定。
  • int binarySearch(List list,T key,Comparator c)在List集合中查找某個元素的下標,但是List的元素必須是T或T的子類對象,而且集合也事先必須是按照c比較器規則進行排序過的,否則結果不確定。
  • int frequency(Collection c,Object o):返回指定集合中指定元素的出現次數

復制、替換

  • void copy(List dest,List src):將src中的內容復制到dest中
  • boolean replaceAll(List list,Object oldVal,Object newVal):使用新值替換 List 對象的所有舊值
  • 提供了多個**unmodifiableXxx()**方法,該方法返回指定 Xxx的不可修改的視圖。

添加

  • boolean addAll(Collection c,T… elements)將所有指定元素添加到指定 collection 中。

同步

  • Collections 類中提供了多個 synchronizedXxx() 方法,該方法可使將指定集合包裝成線程同步的集合,從而可以解決多線程并發訪問集合時的線程安全問題:

Vector 和 Hashtable都是古老的類,都是線程安全類,但是效率比ArrayList和HashMap低。

需要創建線程安全的List實現類,也無需使用Vector 實現類

需要創建線程安全的Map實現類,也無需使用Hashtable實現類。

可以使用Collections工具類把HashMap變成線程安全的。

Collections類提供了多個synchronizedXxx()方法,該方法可以將指定集合包裝成線程同步的集合,從而可以解決多線程并發訪問集合時的線程安全問題。

Java中常用的集合框架的實現類HashSet、TreeSet、ArrayList、ArrayDeque、LinkedList、HashMap和TreeMap都是線程不安全的。如果有多個線程試圖修改它們,Collections提供了多個類方法可以把它們包裝成線程安全的集合。


//使用Collections工具類將常用的集合實現類變成線程安全的!
Collection c = Collections.synchronizedCollection(new ArrayList());
List list = Collections.synchronizedList(new ArrayList());
Set s = Collections.synchroniezedSet(new HashSet());
Map m = Collections.synchronizedMap(new HashMap());

經典面試題:Collection和Collections的區別?

Collection 是一個接口,它是Java集合框架的一部分。
它提供了一系列的方法來操作一組對象,比如添加、移除、遍歷等。
Collection 接口是各種集合類(如 List, Set, Queue 等)的父接口。
它不提供直接的實現,而是通過其子接口和實現類(如 ArrayList, HashSet, LinkedList 等)提供具體的功能。

Collections 是一個包含靜態方法的工具類,這些方法用于操作或返回集合。
它提供了各種對集合操作的工具方法,比如排序 (sort), 反轉 (reverse), 查找 (binarySearch) 等。
它主要用于提供對各種集合的通用操作,而不是表示一組對象。
In a word,Collection 是一個用于定義操作一組對象的接口,而 Collections 是一個提供靜態方法以操作集合的工具類。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/207166.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/207166.shtml
英文地址,請注明出處:http://en.pswp.cn/news/207166.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

jdbc4.MySQLSyntaxErrorException: Query was empty

出現這種異常的原因,有幾個要點 檢查sql語句是否正確檢查你的條件是否真的被sql使用 背景 delete sql在xml中,賦值list對象,計劃進行批量刪除的sql,這時出現了異常,檢查后,發現這個list竟然是空&#xff…

Linux下的軟硬鏈接

Linux下的軟硬鏈接 Linux下的硬鏈接和軟鏈接是一種文件系統級別的鏈接方式,它們允許你在不同的目錄中創建指向同一個文件的引用。硬鏈接和軟鏈接的主要區別在于它們的實現方式和刪除方式。 硬鏈接(Hard Link): 硬鏈接是指向同一…

在linux上如何運用虛擬數據優化器VDO

本章主要介紹虛擬化數據優化器。 什么是虛擬數據優化器VDO 創建VDO設備以節約硬盤空間 16.1 了解什么是VDO VDO全稱是Virtual Data Optimize(虛擬數據優化),主要是為了節省硬盤空間。 現在假設有兩個文件file1和 file2,大小都是10G。file…

cpu 300% 爆滿 內存占用不高 排查

top查詢 cpu最高的PID ps -ef | grep PID 查看具體哪一個jar服務 jstack -l PID > ./jstack.log 下載/打印進程的線程棧信息 可以加信息簡單分析 或進一步 查看堆內存使用情況 jmap -heap Java進程id jstack.log 信息示例 Full thread dump Java HotSpot(TM) 64-Bit Se…

橫向擴展統一存儲與備份服務器功能

Infortrend 更新了GS,GSe,GSe Pro統一存儲系列的備份服務器功能。該功能降低數據備份成本,并提供靈活的備份策略。通過備份服務器功能,用戶可以通過多種途徑實現數據備份,包括公有云(兼容S3)、文…

為內核新增字符驅動模塊

1. 放置代碼 在./source/driver/char下放置模塊文件夾 2. Makefile和Kconfig makefile文件參考 obj-$(AAA_LED) AAA-led.oKconfig文件參考 config AAA_LEDtristate "Phytium macb led control module"depends on XXXdefault mhelpIf you have a n…

C/C++,樹算法——二叉樹的插入(Insert)算法之源程序

1 文本格式 #include<iostream> using namespace std; // A BTree node class BTreeNode { int* keys; // An array of keys int t; // Minimum degree (defines the range for number of keys) BTreeNode** C; // An array of child pointers int …

.NET中有多少種定時器

.NET中至少有6種定時器&#xff0c;每一種定時器都有它的用途和特點。根據定時器的應用場景&#xff0c;可以分為UI相關的定時器和UI無關的定時器。本文將簡單介紹這6種定時器的基本用法和特點。 UI定時器 .NET中的UI定時器主要是WinForm、WPF以及WebForm中的定時器。分別為&am…

dell服務器重啟后顯示器黑屏

1.硬件層面&#xff1a;觀察主機的指示燈 &#xff08;1&#xff09;指示燈偏黃&#xff0c;硬件存在問題&#xff08;內存條有靜電&#xff0c;拔出后用橡皮擦擦拭&#xff1b;或GPU松動&#xff09; a.電源指示燈黃&#xff0c;閃爍三下再閃爍一下&#xff0c;扣下主板上的紐…

Python Appium Selenium 查殺進程的實用方法

一、前置說明 在自動化過程中&#xff0c;經常需要在命令行中執行一些操作&#xff0c;比如啟動應用、查殺應用等&#xff0c;因此可以封裝成一個CommandExecutor來專門處理這些事情。 二、操作步驟 # cmd_util.pyimport logging import os import platform import shutil i…

Java編程中通用的正則表達式(二)

正則表達式&#xff0c;又稱正則式、規則表達式、正規表達式、正則模式或簡稱正則&#xff0c;是一種用來匹配字符串的工具。它是一種字符串模式的表示方法&#xff0c;可以用來檢索、替換和驗證文本。正則表達式是一個字符串&#xff0c;它描述了一些字符的組合&#xff0c;這…

dockers安裝rabbitmq

RabbitMQ: easy to use, flexible messaging and streaming — RabbitMQhttps://www.rabbitmq.com/ Downloading and Installing RabbitMQ — RabbitMQ docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.12-management 之后參照&#xff1a;dock…

高低壓配電智能監控系統

高低壓配電智能監控系統是一種綜合運用物聯網、云計算、大數據和人工智能等技術的智能化監控系統&#xff0c;主要用于對高低壓配電設備進行實時監測、數據采集、故障預警和遠程管理。 該系統通過安裝智能傳感器、智能設備、網絡通訊技術等手段&#xff0c;依托電易云-智慧電力…

解決“由于找不到msvcr110.dll無法繼續執行”的錯誤問題,一鍵修復msvcr110.dll丟失

當你遇到“由于找不到msvcr110.dll無法繼續執行”的錯誤時&#xff0c;通常是因為你的電腦缺少相關的msvcr110.dll文件。如果你的電腦中缺失了msvcr110.dll文件丟失那么可以根據下面的方法嘗試解決msvcr110.dll丟失的問題。 一.解決msvcr110.dll丟失的方法 使用dll修復工具 D…

設計圖中時序圖

設計圖中的時序圖通常用于展示兩個或多個對象之間的交互和消息傳遞的順序。它是一種用于描述軟件或系統中的并發性和時序行為的工具。 以下是一個簡單的時序圖的示例&#xff1a; 首先&#xff0c;在時序圖中創建兩個對象&#xff0c;例如"對象A"和"對象B&quo…

學習筆記9——JUC三種量級的鎖機制

學習筆記系列開頭慣例發布一些尋親消息 鏈接&#xff1a;https://baobeihuijia.com/bbhj/contents/3/197325.html 多線程訪問共享資源沖突 臨界區&#xff1a;一段代碼塊存在對共享資源的多線程讀寫操作&#xff0c;稱這段代碼塊為臨界區 競態條件&#xff1a;多個線程在臨界…

Linux OpenMP使用總結

當涉及到編寫 Linux OpenMP 程序時&#xff0c;以下是體會&#xff1a; 了解 OpenMP 基礎&#xff1a;在使用 OpenMP 進行并行編程之前&#xff0c;確保您了解并行編程的基本概念和 OpenMP 的工作原理。您可以參考 OpenMP 的官方文檔或其他相關資源來獲取更多信息。配置 OpenM…

#HarmonyOS:@Styles裝飾器:定義組件重用樣式

Styles可以定義在組件內或全局&#xff0c;在全局定義時需在方法名前面添加function關鍵字&#xff0c;組件內定義時則不需要添加function關鍵字。 組件內Styles的優先級高于全局Styles。 框架優先找當前組件內的Styles&#xff0c;如果找不到&#xff0c;則會全局查找。 // …

GO設計模式——3、抽象工廠模式(創建型)

目錄 抽象工廠模式&#xff08;Abstract Factory Pattern&#xff09; 抽象工廠模式的核心角色 優缺點 代碼實現 抽象工廠模式&#xff08;Abstract Factory Pattern&#xff09; 抽象工廠模式&#xff08;Abstract Factory Pattern&#xff09;是圍繞一個超級工廠創建其他…

單詞倒排

對字符串中的所有單詞進行倒排。 說明&#xff1a; 1、構成單詞的字符只有26個大寫或小寫英文字母&#xff1b; 2、非構成單詞的字符均視為單詞間隔符&#xff1b; 3、要求倒排后的單詞間隔符以一個空格表示&#xff1b;如果原字符串中相鄰單詞間有多個間隔符時&#xff0c;倒排…