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