Java8處理List的雙層循環(huán)問題
Java處理List的雙層循環(huán)程序員經(jīng)常遇到,一般都是當(dāng)兩個List某個值滿足某條件時候,進行相應(yīng)的處理;
1.list和map之間的相互轉(zhuǎn)換
/** * 兩個List對象當(dāng)id相同的時候(注意是兩個對象,而非兩個集合) * @param husbands * @param wives */ private static void test8(List<Husband> husbands, List<Wife> wives) { List<Family> families = Lists.newArrayList(); //將wives轉(zhuǎn)換為map,這里的key一定要唯一,即為familyId Map<Integer, Wife> wifeMap = wives.stream().collect(toMap(w -> w.getFamilyId(), w -> w)); families = husbands.stream().map(husband -> { Family family = new Family(); Wife wife = wifeMap.get(husband.getFamilyId()); family.setFamilyId(wife.getFamilyId()); family.setHusbandName(husband.getHusbandName()); family.setWifeName(husband.getWifename()); return family; }).collect(Collectors.toList()); }
2.java8中的
groupingBy
counting
mapToDouble
filter
sum等函數(shù)方法的使用
//蘋果顏色對應(yīng)的數(shù)量 Map<String, Long> collect = appleVos.stream().collect(groupingBy(AppleVo::getColor, counting())); // 過濾掉顏色為黑色的蘋果,并匯總好蘋果的總金額 Double sum = appleVos.stream().filter(i -> "black".equals(i.getColor())).mapToDouble(AppleVo::getPrice).sum();
補充知識:java8新技術(shù):數(shù)據(jù)流式處理之兩個list集合多對多遍歷關(guān)聯(lián)
自用測試方法
說明一下:list1和list2兩個集合進行匹配,將list2中的對應(yīng)的值取出,使list1中的每條數(shù)據(jù)都有對應(yīng)的list2中的name值,list1為主集合,數(shù)據(jù)需全部展示;
注意:若list1的數(shù)量多于list2,并且數(shù)據(jù)匹配不上,則多出來的會在list3中為null;
以上這篇Java8處理List的雙層循環(huán)問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
IntelliJ IDEA JRebel 安裝使用圖文教程(熱部署插件)
IDEA 全稱 IntelliJ IDEA,是java語言開發(fā)的集成環(huán)境,IntelliJ在業(yè)界被公認(rèn)為最好的java開發(fā)工具之一。這篇文章主要介紹了IntelliJ IDEA 熱部署插件JRebel 安裝使用圖文教程,需要的朋友可以參考下2018-03-03帶有@Transactional和@Async的循環(huán)依賴問題的解決
這篇文章主要介紹了帶有@Transactional和@Async的循環(huán)依賴問題的解決,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04SpringBoot整合mybatisplus和druid的示例詳解
這篇文章主要介紹了SpringBoot整合mybatisplus和druid的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08