Java開發中常用CollectionUtils方式,以及Spring中CollectionUtils常用方法示例

場景

Java開發中常用的CollectionUtils

一、Spring Framework的CollectionUtils

包路徑:org.springframework.util.CollectionUtils

核心方法:

isEmpty(Collection<?> coll)

List<String> list = null;
boolean empty = CollectionUtils.isEmpty(list);? // true

containsAny(Collection<?> source, Collection<?> candidates)

boolean hasCommon = CollectionUtils.containsAny(List.of(1,2),? Set.of(2,3));? // true

二、Apache Commons Collections的CollectionUtils

包路徑:org.apache.commons.collections4.CollectionUtils

特色方法:

isEqualCollection(Collection<?> a, Collection<?> b)

boolean equal = CollectionUtils.isEqualCollection(List.of("A",? "B", "B"),List.of("B",? "A", "B")
); // true(忽略順序)

collate(Iterable<? extends T> a, Iterable<? extends T> b, Comparator<? super T> c)

List<Integer> merged = CollectionUtils.collate(List.of(1,? 3),List.of(2,? 4),Comparator.naturalOrder()
); // [1,2,3,4]

三、Google Guava的Collections2

包路徑:com.google.common.collect.Collections2

高階用法:

filter(Collection<E>, Predicate<? super E>)

Collection<String> filtered = Collections2.filter(Lists.newArrayList("a",? "b", null),Objects::nonNull
); // ["a", "b"]

transform(Collection<F>, Function<? super F, ? extends T>)

Collection<Integer> lengths = Collections2.transform(List.of("aa",? "bbb"),String::length
); // [2, 3]

Java工具庫Guava的集合工具類Iterables、Lists、Sets、Maps、Multisets、Multimaps的常用方法示例:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/127926429

四、Hutool的CollUtil

包路徑:cn.hutool.core.collection.CollUtil

國產工具亮點:

newArrayList(E... elements)

List<String> list = CollUtil.newArrayList("a",? "b"); // 可變列表

groupByField(Collection<T>, String fieldName)

List<User> users = Arrays.asList(new? User(1), new User(2));
Map<Integer, List<User>> group = CollUtil.groupByField(users,? "id");

五、Java標準庫的Collections

基礎工具類:

synchronizedCollection(Collection<T> c)

Collection<String> syncColl = Collections.synchronizedCollection(new? ArrayList<>());

unmodifiableCollection(Collection<? extends T> c)

Collection<Integer> immutable = Collections.unmodifiableCollection(List.of(1,2));

工具類對比選擇指南

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi

實現

Spring Framework中CollectionUtils工具類的核心方法解析及使用示例

一、集合判空操作

??????? List<String> list = new ArrayList<>();boolean empty = CollectionUtils.isEmpty(list);?System.out.println(empty);Map<String, Object> map = Collections.singletonMap("key",? "value");boolean notEmpty = CollectionUtils.isEmpty(map);?System.out.println(notEmpty);

二、集合合并與轉換

mergeArrayIntoCollection()

??????  String[] arr = {"a", "b"};List<String> target = new ArrayList<>(List.of("c"));CollectionUtils.mergeArrayIntoCollection(arr,? target);System.out.println(target);

toIterator()

        Vector<String> vector = new Vector<>(Set.of("x",  "y"));Enumeration<String> en = vector.elements();Iterator<String> it = CollectionUtils.toIterator(en);while (it.hasNext()){System.out.println(it.next());}

三、條件過濾與查找

findFirstMatch()

??????? List<Integer> source = List.of(1,? 2, 3);List<Integer> candidates = List.of(3,? 4);Integer match = CollectionUtils.findFirstMatch(source,? candidates); // 3System.out.println(match);

containsAny()

??????? boolean hasCommon = CollectionUtils.containsAny(List.of("A",? "B"),Set.of("B",? "C")); // trueSystem.out.println(hasCommon);boolean hasCommon1 = CollectionUtils.containsAny(List.of("A",? "B"),Set.of("D",? "C")); // falseSystem.out.println(hasCommon1);

四、特殊集合操作

hasUniqueObject()

??????? List<Object> singleton = Collections.singletonList("unique");boolean isUnique = CollectionUtils.hasUniqueObject(singleton);? // trueSystem.out.println(isUnique);

toMultiValueMap()

??????? //將一個鍵值對的集合轉換成一個 MultiValueMap,其中每個鍵可以映射到多個值。這對于處理例如表單提交數據、查詢參數等場景特別有用。List<Pair<String, Integer>> pairs = List.of(Pair.of("a",? 1),Pair.of("a",? 2));Map<String, List<Integer>> tempMap = new HashMap<>();pairs.forEach(pair? ->tempMap.computeIfAbsent(pair.getKey(),? k -> new ArrayList<>()).add(pair.getValue()));MultiValueMap<String, Integer> map1 = CollectionUtils.toMultiValueMap(tempMap);System.out.println(map1);

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

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

相關文章

人工智能學習:Transformer結構(文本嵌入及其位置編碼器)

一、輸入部分介紹 輸入部分包含: 編碼器源文本嵌入層及其位置編碼器 解碼器目標文本嵌入層及其位置編碼器 在transformer的encoder和decoder的輸入層中,使用了Positional Encoding,使得最終的輸入滿足: 這里,input_embedding是通過常規embedding層,將每一個詞的…

? 肆 ? ? 默認安全建設方案:c-1.增量風險管控

&#x1f44d;點「贊」&#x1f4cc;收「藏」&#x1f440;關「注」&#x1f4ac;評「論」 在金融科技深度融合的背景下&#xff0c;信息安全已從單純的技術攻防擴展至架構、合規、流程與創新的系統工程。作為一名從業十多年的老兵&#xff0c;將系統闡述數字銀行安全體系的建設…

第二課、熟悉Cocos Creator 編輯器界面

本文主要介紹Cocos Creator 編輯器界面中幾個常規的面板功能&#xff0c;讓新手了解編輯器界面中常規的面板功能&#xff0c;更好的使用Cocos Creator 編輯器。一、編輯器界面常規面板劃分Cocos Creater編輯器默認樣式如上&#xff0c;主要包含&#xff1a;1、工具欄&#xff0…

Elixir通過Onvif協議控制IP攝像機,擴展ExOnvif的攝像頭連續移動功能 ContinuousMove

Elixir 通過Onvif 對IP設備進行控制時&#xff0c;可以使用 ExOnvif 庫。ExOnvif官方文檔 此文章僅提供了ContinuousMove的控制方式及示例。 Elixir Onvif協議控制IP設備的其他命令&#xff0c;可以參考以下鏈接 絕對移動 【AbsoluteMove】 調用指定預置位 【GotoPreset】 …

android studio JNI 環境配置實現 java 調用 c/c++

1、在 app 級的 build.gradle 文件配置兩個地方 android{ defaultConfig{ // 在 defaultConfig 里配置下面代碼 externalNativeBuild { cmake { cppFlags "-frtti -fexceptions"//添加對 c 的異常處理支持 …

靜態時序分析詳解之時序路徑類型

目錄 一、概覽 二、時序路徑 2.1 數據路徑 2.2 時鐘路徑 2.3 時鐘門控路徑 2.4 異步路徑 2.5 關鍵路徑 2.6 False路徑 2.7 單周期路徑 2.8 多周期路徑 2.9 最長路徑和最短路徑 三、參考資料 一、概覽 ? ?靜態時序分析通過模擬最差條件下分析所有的時序路徑&am…

SpringBoot埋點功能技術實現方案深度解析:架構設計、性能優化與擴展性實踐

SpringBoot埋點功能技術實現方案深度解析&#xff1a;架構設計、性能優化與擴展性實踐 1. 原理剖析與技術實現細節 1.1 埋點技術基本原理 埋點&#xff08;Tracking&#xff09;是通過在代碼中植入特定邏輯&#xff0c;收集用戶行為數據、系統運行狀態和業務指標的技術手段。在…

自建prometheus監控騰訊云k8s集群

自建prometheus監控騰訊云k8s集群 使用場景 k8s集群&#xff08;騰訊云容器服務&#xff09; promtheus (外部自建服務) 騰訊云提供了容器內部自建 Prometheus 監控 TKE 集群的文檔&#xff0c;參考。 當前的環境promethues建在k8S外的云服務器上&#xff0c;與上面鏈接文…

2025高教社國賽數學建模C題參考論文(含模型和代碼)

2025 年高教社杯大學生數學建模競賽 C 題參考論文 目錄 NIPT 的時點選擇與胎兒的異常判定 摘要 1 問題重述 2 問題分析 2.1 問題 1 分析 2.2 問題 2 分析 2.3 問題 3 分析 2.4 問題 4 分析 3 模型假設與符號定義 3.1 模型假設 4. 孕周在 10-25 周內檢測有…

iOS開發環境搭建及打包流程

一、下載xcode 直接去蘋果商店的appstore下載就行 二、clone項目 1.登錄xcode蘋果賬號或對應代碼倉庫賬號 2.clone項目 3.安裝設備真機環境&#xff08;未安裝過的話&#xff09; 三.安裝cocoapods 1. 檢查并更新 Ruby 環境 CocoaPods 是基于 Ruby 編寫的&#xff0c;因此…

數據結構之鏈表(單向鏈表與雙向鏈表)

一&#xff0c;鏈表描述鏈表是一種常見的重要的數據結構,是動態地進行存儲分配的一種結構。常用于需存儲的數據的數目無法事先確定。1.鏈表的一般結構鏈表的組成&#xff1a; 頭指針&#xff1a;存放一個地址&#xff0c;該地址指向一個元素 結點&#xff1a;用戶需要的實際數據…

從反向代理到負載均衡:Nginx + Tomcat 構建高可用Web服務架構

從反向代理到負載均衡&#xff1a;Nginx Tomcat 構建高可用Web服務架構 文章目錄從反向代理到負載均衡&#xff1a;Nginx Tomcat 構建高可用Web服務架構一、基礎鋪墊&#xff1a;什么是反向代理&#xff1f;1.1 反向代理的核心原理1.2 Nginx反向代理實戰配置步驟1&#xff1a…

Simulink中使用Test sequence單元測試

一、Tips 在對simulink模型進行Test sequence單元測試時&#xff0c;如果采取書寫測試用例的話&#xff0c;有以下操作。 1、使用”fprintf(‘time%f\n’, t);“來打印當前step的時間&#xff1b; 二、數據類型轉換 1、double類型 -> boolean類型 clc; clear all;% 1、doubl…

【mysql】SQL自連接:什么時候需要,什么時候不需要?

SQL自連接:什么時候需要,什么時候不需要? 通過具體示例和對比解析,徹底搞懂SQL自連接的使用場景 在處理SQL查詢時,尤其是當表中存在自引用關系(如referee_id引用同一張表的id)時,很多開發者會疑惑:這個查詢到底需不需要自連接?本文將通過多個具體示例,帶你徹底弄清何…

「美」創新在于人,而不是產品 - AxureMost 落葵網

添加圖片注釋&#xff0c;不超過 140 字&#xff08;可選&#xff09; 第一章&#xff1a;創新的心理學 創新與心理安全 蠟燭問題&#xff1a;卡爾鄧克爾的蠟燭問題實驗揭示了創造性思維的重要性。通過顛覆對盒子用途的先入為主觀念&#xff0c;參與者能夠找到創新性的解決方案…

新規則,新游戲:AI時代下的戰略重構與商業實踐

當你的客服AI能夠真正像員工一樣理解客戶的行業術語&#xff0c;當AI能主動從大量的客戶咨詢中篩選出高價值潛在客戶 —— 這已經不再是理想中才能存在的場景&#xff0c;而是當下 “人工智能 ” 行動深入推進中&#xff0c;企業智能化轉型的真實寫照。 "人工智能 " …

ScanNet: Richly-annotated 3D Reconstructions of Indoor Scenes 數據集構建

paper link: paperlink Abstract: 這個數據集是個RGB-D視頻數據集&#xff0c;在707個不同空間中獲取了1513個掃描的場景&#xff0c;250w個視圖&#xff0c;并且標注了相機位姿&#xff0c;表面重建&#xff0c;語義分割。本數據集共有20人掃描500名工作者進行標注。 數據集…

c語言期末復習

一、選擇題(10道) 1、以下哪個不是C語言的關鍵字? A) int B) float C) string D) while (答案:C) 2、表達式 5 / 2 的結果是: A) 2.5 B) 2 C) 3 D) 2.0 (答案:B) 3、指針變量存儲的是: A) 變量的值 B) 變量的地址 C) 變量的類型 D) 變量的名稱 (答案:B) 4、以…

JLINK 調試器單步調試單片機

0 JLINK 調試器單步調試單片機 1 物理層1.1 調整電壓和開發板一致2 環境搭建 2.1 安裝 JLink_Windows_V862_x86_642.2 vscode 配置 {"version": "0.2.0","configurations": [{"name": "(gdb) 啟動","type": "…

大模型(LLM)安全保障機制(技術、標準、管理)

大模型&#xff08;LLM&#xff09;的安全保障涉及技術、標準、管理等多個層面。下面我將結合其核心風險&#xff0c;為你梳理主要的安全機制、相關標準框架以及一些實踐建議。為了讓您快速了解大模型面臨的主要風險及相應的應對機制&#xff0c;我準備了一個表格&#xff1a;安…