一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

List使用Stream流進(jìn)行集合Collection的各種運(yùn)算匯總:對(duì)BigDecimal求和,某個(gè)字段的和、最大值、最小值、平均值,字段去重,過濾等

 丹楓無(wú)跡 2021-05-18

       寫Java接口的朋友都知道,Java 8的更新,經(jīng)常會(huì)用到過濾 list<Object> 里的數(shù)據(jù),本文就對(duì)List使用Stream流進(jìn)行集合Collection的各種運(yùn)算做一個(gè)匯總!

優(yōu)勢(shì):

       Stream 是對(duì)集合(Collection)對(duì)象功能的增強(qiáng),它專注于對(duì)集合對(duì)象進(jìn)行各種非常便利、高效的聚合操作,或者大批量數(shù)據(jù)操作。

       通常我們需要多行代碼才能完成的操作,借助于Stream流式處理可以很簡(jiǎn)單的實(shí)現(xiàn)。

各種Stream流操作:

  • 過濾soList中Object的Name字段為空的情況
List<Object> soList = Lists.newArrayList();
List<Object> list = soList.stream().filter(item -> item.getName() != null).collect(Collectors.toList()); 
  • 取soList列表根據(jù)對(duì)象某個(gè)字段 去重
 List<Object> soList = Lists.newArrayList()

//distinct() 去重  
List<Integer> maxDueDayList2 = soList.stream().map(Object::getMaxDueDay).distinct().collect(Collectors.toList());
  • 計(jì)算一個(gè)List對(duì)象中某個(gè)字段總和
int total = list.stream().mapToInt(User::getAge).sum();
//上下等同
int ageSum = userList.stream().collect(Collectors.summingInt(User::getAge));
  • 計(jì)算一個(gè)List對(duì)象中某個(gè)字段的和、最大值、最小值、平均值、總個(gè)數(shù)
double doublesum = listUsers.stream().mapToDouble(Users::getAge).sum();//和
int intmax = listUsers.stream().mapToInt(Users::getAge).max().getAsInt();//最大
int intmin = listUsers.stream().mapToInt(Users::getAge).min().getAsInt();//最小
double avg = listUsers.stream().mapToDouble(Users::getAge).average().getAsDouble();//平均

//計(jì)算一個(gè)number類型的List對(duì)象
Integer[] integerArray = {1, 3, 5, 10, 18};
List<Integer> list = new ArrayList<>(Arrays.asList(integerArray));
IntSummaryStatistics summaryStatistics = list.stream().mapToInt((s) -> s).summaryStatistics();

System.out.println("總和:" + summaryStatistics.getSum());
System.out.println("平均數(shù):" + summaryStatistics.getAverage());
System.out.println("總個(gè)數(shù):" + summaryStatistics.getCount());
System.out.println("最大值:" + summaryStatistics.getMax());
System.out.println("最小值:" + summaryStatistics.getMin());
  • Java集合對(duì)象中的一個(gè)字段對(duì)其進(jìn)行排序
Collections.sort(list, (o1, o2) -> o1.getCustomerCount() - o2.getCustomerCount());
List<Integer> ss = new ArrayList<>();
Collections.sort(ss, (o1, o2) -> (o1 - o2));
  • 取出list對(duì)象中的一個(gè)屬性 列
List<String> stIdList1 = stuList.stream().map(Student::getId).collect(Collectors.toList());
  • List使用Stream對(duì)BigDecimal求和方法
BigDecimal result = fileDatas.stream()
// 將user對(duì)象的age取出來(lái)map為Bigdecimal
.map(IpayRepayFileData::getTotalAmount)
// 使用reduce()聚合函數(shù),實(shí)現(xiàn)累加器
.reduce(BigDecimal.ZERO,BigDecimal::add);

  reduce是一個(gè)終結(jié)操作,它能夠通過某一個(gè)方法,對(duì)元素進(jìn)行削減操作。該操作的結(jié)果會(huì)放在一個(gè)Optional變量里返回。可以利用它來(lái)實(shí)現(xiàn)很多聚合方法比如count,max,min等。 

       T reduce(T identity, BinaryOperator accumulator);
       第一個(gè)參數(shù)是我們給出的初值,第二個(gè)參數(shù)是累加器,可以自己用實(shí)現(xiàn)接口完成想要的操作,這里使用Bigdecimal的add方法 最后reduce會(huì)返回計(jì)算后的結(jié)果

 

大家如果還有其他list的操作歡迎評(píng)論補(bǔ)充!

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    99久久国产精品亚洲| 中文字幕高清免费日韩视频| 91老熟妇嗷嗷叫太91| 国产精品制服丝袜美腿丝袜| 日韩一区二区三区在线欧洲| 91超精品碰国产在线观看| 嫩草国产福利视频一区二区| 老司机精品视频在线免费| 中文文精品字幕一区二区| 日本av一区二区不卡| 日本熟女中文字幕一区| 午夜午夜精品一区二区| 日韩中文字幕在线不卡一区| 少妇成人精品一区二区| 国产传媒欧美日韩成人精品| 日韩特级黄片免费在线观看| 精品少妇一区二区三区四区| 日本午夜免费福利视频| 国产一区二区三区av在线| 久久这里只精品免费福利| 欧美一级片日韩一级片| 欧美一区二区三区性视频 | 欧美三级精品在线观看| 国产成人精品视频一区二区三区 | 欧美一区二区三区不卡高清视| 国产精品一区二区传媒蜜臀| 国产又大又黄又粗的黄色| 在线观看视频成人午夜| 亚洲人午夜精品射精日韩| 好吊妞视频这里有精品| 国产偷拍盗摄一区二区| 国产精品日韩精品最新| 午夜福利黄片免费观看| 乱女午夜精品一区二区三区 | 日韩熟妇人妻一区二区三区| 91久久精品在这里色伊人| 午夜色午夜视频之日本| 日本加勒比系列在线播放| 日韩午夜福利高清在线观看| 国产精品成人一区二区三区夜夜夜 | 午夜福利黄片免费观看|