java獲取兩個List集合的交集代碼示例
獲取兩個List集合的交集
可以使用Java中的retainAll方法來獲取兩個List的交集:
假設(shè)有兩個List類型的集合list1和list2,代碼如下:
List<String> list1 = new ArrayList<>(); list1.add("apple"); list1.add("banana"); list1.add("orange"); List<String> list2 = new ArrayList<>(); list2.add("banana"); list2.add("orange"); list2.add("watermelon");
下面是獲取兩個集合的交集的代碼:
List<String> intersection = new ArrayList<>(list1); intersection.retainAll(list2); System.out.println(intersection);
輸出結(jié)果為:
[banana, orange]
其中,retainAll方法會修改intersection集合,使其只包含兩個集合的交集。在這個例子中,intersection集合最初是包含list1集合的元素的,然后通過retainAll方法過濾掉不屬于list2集合的元素,最終得到兩個集合的交集。
附:java中兩個list對象取交集、差集
在一般操作中,對于list集合取交集、差集、并集,比較簡單,網(wǎng)上有很多例子,如:
今天我們來說一下對于兩個list集合該如何取交集與并集:
如下兩個集合:groupEntityList、saveEntities,groupEntityList是組織集合,saveEntities是組織用戶集合,即saveEntities包含groupEntityList中的數(shù)據(jù)。
交集:
private List<SysOrgUserRefModel> colationOrgUserData(List<SysOrgUserRefModel> saveEntities,List<WFGroupEntity> groupEntityList){ // 拿出組織集合中的組織id集合 List<String> groupList = groupEntityList.stream().map(WFGroupEntity::getId).collect(Collectors.toList()); // 根據(jù)組織用戶中的組織id與組織id集合比對,取相同的數(shù)據(jù) saveEntities = saveEntities.stream().filter(entity -> groupList.contains(CandidateDTO.newPostStr(entity.getOrgId()))).collect(Collectors.toList()); return saveEntities; }
差集:saveEntities - groupEntityList
private List<SysOrgUserRefModel> colationOrgUserData(List<SysOrgUserRefModel> saveEntities,List<WFGroupEntity> groupEntityList){ // 拿出組織集合中的組織id集合 List<String> groupList = groupEntityList.stream().map(WFGroupEntity::getId).collect(Collectors.toList()); // 根據(jù)組織用戶中的組織id與組織id集合比對,取相同的數(shù)據(jù) saveEntities = saveEntities.stream().filter(entity -> !groupList.contains(CandidateDTO.newPostStr(entity.getOrgId()))).collect(Collectors.toList()); return saveEntities; }
表達式中誰在前,誰就是減數(shù)。
總結(jié)
到此這篇關(guān)于java獲取兩個List集合的交集的文章就介紹到這了,更多相關(guān)java獲取List集合交集內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot yaml語法與數(shù)據(jù)讀取操作詳解
YAML 是 “YAML Ain’t Markup Language”(YAML 不是一種標記語言)的遞歸縮寫。在開發(fā)的這種語言時,YAML 的意思其實是:“Yet Another Markup Language”(仍是一種標記語言),本文給大家介紹的非常詳細,需要的朋友可以參考下2022-07-07關(guān)于mybatis調(diào)用存儲過程獲取返回值問題
這篇文章主要介紹了mybatis調(diào)用存儲過程獲取返回值問題,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-01-01聊聊Spring MVC JSON數(shù)據(jù)交互的問題
我們在開發(fā)中后端經(jīng)常需要接受來自于前端傳遞的Json字符串數(shù)據(jù),怎么把Json字符串轉(zhuǎn)換為Java對象呢?下面小編給大家?guī)砹薙pring MVC JSON數(shù)據(jù)交互的問題,感興趣的朋友一起看看吧2021-10-10MyBatisPlus使用${ew.customSqlSegment}別名問題解決
在使用MyBatisPlus進行連表查詢時,可能遇到因${ew.customSqlSegment}無法加別名的問題,本文就來介紹一下如何解決,感興趣的可以了解一下2024-10-10springboot本地調(diào)試沒問題,打包運行報錯原因及分析
這篇文章主要介紹了springboot本地調(diào)試沒問題,打包運行報錯原因及分析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05Spring操作JdbcTemplate數(shù)據(jù)庫的方法學(xué)習(xí)
這篇文章主要為大家介紹了Spring操作JdbcTemplate數(shù)據(jù)庫方法學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-05-05詳解Spring MVC攔截器實現(xiàn)session控制
這篇文章主要介紹了詳解Spring MVC攔截器實現(xiàn)session控制,使用session監(jiān)聽,重復(fù)登錄后,強制之前登錄的session過期。有興趣的可以了解一下。2017-01-01