這篇文章主要介紹了如何在java8項(xiàng)目中就那個(gè)List轉(zhuǎn)換為map ,此處通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考價(jià)值,需要的朋友可以參考下:
成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、成都外貿(mào)網(wǎng)站建設(shè)公司服務(wù)團(tuán)隊(duì)是一支充滿著熱情的團(tuán)隊(duì),執(zhí)著、敏銳、追求更好,是創(chuàng)新互聯(lián)的標(biāo)準(zhǔn)與要求,同時(shí)竭誠(chéng)為客戶提供服務(wù)是我們的理念。創(chuàng)新互聯(lián)建站把每個(gè)網(wǎng)站當(dāng)做一個(gè)產(chǎn)品來(lái)開(kāi)發(fā),精雕細(xì)琢,追求一名工匠心中的細(xì)致,我們更用心!
Java的特點(diǎn)有哪些 1.Java語(yǔ)言作為靜態(tài)面向?qū)ο缶幊陶Z(yǔ)言的代表,實(shí)現(xiàn)了面向?qū)ο罄碚摚试S程序員以優(yōu)雅的思維方式進(jìn)行復(fù)雜的編程。 2.Java具有簡(jiǎn)單性、面向?qū)ο?、分布式、安全性、平臺(tái)獨(dú)立與可移植性、動(dòng)態(tài)性等特點(diǎn)。 3.使用Java可以編寫(xiě)桌面應(yīng)用程序、Web應(yīng)用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應(yīng)用程序等。
利用java8新特性,可以用簡(jiǎn)潔高效的代碼來(lái)實(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ù):
ListappleList = new ArrayList<>();//存放apple對(duì)象集合 Apple apple1 = new Apple(1,"蘋(píng)果1",new BigDecimal("3.25"),10); Apple apple12 = new Apple(1,"蘋(píng)果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è)屬性來(lái)分組,例如,以id分組,將id相同的放在一起:
//List 以ID分組 Map> Map > groupBy = appleList.stream().collect(Collectors.groupingBy(Apple::getId)); System.err.println("groupBy:"+groupBy); {1=[Apple{id=1, name='蘋(píng)果1', money=3.25, num=10}, Apple{id=1, name='蘋(píng)果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 來(lái)設(shè)置,如果有重復(fù)的key,則保留key1,舍棄key2 */ MapappleMap = appleList.stream().collect(Collectors.toMap(Apple::getId, a -> a,(k1,k2)->k1)); 打印appleMap {1=Apple{id=1, name='蘋(píng)果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、過(guò)濾Filter
從集合中過(guò)濾出來(lái)符合條件的元素:
//過(guò)濾出符合條件的數(shù)據(jù) ListfilterList = 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 來(lái)計(jì)算流中的最大或最小值。
OptionalmaxDish = 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去重 Listunique = appleList.stream().collect( collectingAndThen( toCollection(() -> new TreeSet<>(comparingLong(Apple::getId))), ArrayList::new) );
到此這篇關(guān)于如何在java8項(xiàng)目中就那個(gè)List轉(zhuǎn)換為map 的文章就介紹到這了,更多相關(guān)如何在java8項(xiàng)目中就那個(gè)List轉(zhuǎn)換為map 的內(nèi)容請(qǐng)搜索創(chuàng)新互聯(lián)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持創(chuàng)新互聯(lián)!