真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java8怎么實(shí)現(xiàn)List轉(zhuǎn)map、分組、過濾等操作

這篇文章主要講解了“java8怎么實(shí)現(xiàn)List轉(zhuǎn)map、分組、過濾等操作”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“java8怎么實(shí)現(xiàn)List轉(zhuǎn)map、分組、過濾等操作”吧!

創(chuàng)新互聯(lián)長(zhǎng)期為1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為臨川企業(yè)提供專業(yè)的網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站建設(shè),臨川網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

利用java8新特性,可以用簡(jiǎn)潔高效的代碼來實(shí)現(xiàn)一些數(shù)據(jù)處理。

定義1個(gè)Apple對(duì)象:

public class Apple {  private Integer id;  private String name;  private BigDecimal money;  private Integer num;  public Apple(Integer id, String name, BigDecimal money, Integer num) {    this.id = id;    this.name = name;    this.money = money;    this.num = num;  }}

添加一些測(cè)試數(shù)據(jù):

List appleList = new ArrayList<>();//存放apple對(duì)象集合 Apple apple1 = new Apple(1,"蘋果1",new BigDecimal("3.25"),10);Apple apple12 = new Apple(1,"蘋果2",new BigDecimal("1.35"),20);Apple apple2 = new Apple(2,"香蕉",new BigDecimal("2.89"),30);Apple apple3 = new Apple(3,"荔枝",new BigDecimal("9.99"),40); appleList.add(apple1);appleList.add(apple12);appleList.add(apple2);appleList.add(apple3);

1、分組

List里面的對(duì)象元素,以某個(gè)屬性來分組,例如,以id分組,將id相同的放在一起:

//List 以ID分組 Map>Map> groupBy = appleList.stream().collect(Collectors.groupingBy(Apple::getId)); System.err.println("groupBy:"+groupBy);{1=[Apple{id=1, name='蘋果1', money=3.25, num=10}, Apple{id=1, name='蘋果2', money=1.35, num=20}], 2=[Apple{id=2, name='香蕉', money=2.89, num=30}], 3=[Apple{id=3, name='荔枝', money=9.99, num=40}]}

2、List轉(zhuǎn)Map

id為key,apple對(duì)象為value,可以這么做:

/** * List -> Map * 需要注意的是: * toMap 如果集合對(duì)象有重復(fù)的key,會(huì)報(bào)錯(cuò)Duplicate key .... * apple1,apple12的id都為1。 * 可以用 (k1,k2)->k1 來設(shè)置,如果有重復(fù)的key,則保留key1,舍棄key2 */Map appleMap = appleList.stream().collect(Collectors.toMap(Apple::getId, a -> a,(k1,k2)->k1));打印appleMap{1=Apple{id=1, name='蘋果1', money=3.25, num=10}, 2=Apple{id=2, name='香蕉', money=2.89, num=30}, 3=Apple{id=3, name='荔枝', money=9.99, num=40}}

3、過濾Filter

從集合中過濾出來符合條件的元素:

//過濾出符合條件的數(shù)據(jù)List filterList = appleList.stream().filter(a -> a.getName().equals("香蕉")).collect(Collectors.toList()); System.err.println("filterList:"+filterList);[Apple{id=2, name='香蕉', money=2.89, num=30}]

4.求和

將集合中的數(shù)據(jù)按照某個(gè)屬性求和:

//計(jì)算 總金額BigDecimal totalMoney = appleList.stream().map(Apple::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add);System.err.println("totalMoney:"+totalMoney); //totalMoney:17.48

5.查找流中最大 最小值

Collectors.maxBy 和 Collectors.minBy 來計(jì)算流中的最大或最小值。

Optional maxDish = Dish.menu.stream().   collect(Collectors.maxBy(Comparator.comparing(Dish::getCalories)));maxDish.ifPresent(System.out::println); Optional minDish = Dish.menu.stream().   collect(Collectors.minBy(Comparator.comparing(Dish::getCalories)));minDish.ifPresent(System.out::println);

6.去重

import static java.util.Comparator.comparingLong;import static java.util.stream.Collectors.collectingAndThen;import static java.util.stream.Collectors.toCollection; // 根據(jù)id去重   List unique = appleList.stream().collect(        collectingAndThen(            toCollection(() -> new TreeSet<>(comparingLong(Apple::getId))), ArrayList::new)    );

感謝各位的閱讀,以上就是“java8怎么實(shí)現(xiàn)List轉(zhuǎn)map、分組、過濾等操作”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)java8怎么實(shí)現(xiàn)List轉(zhuǎn)map、分組、過濾等操作這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!


新聞標(biāo)題:java8怎么實(shí)現(xiàn)List轉(zhuǎn)map、分組、過濾等操作
本文地址:http://weahome.cn/article/jsgcpi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部