内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

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

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

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了萬(wàn)榮免費(fèi)建站歡迎大家使用!

利用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ù):

  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è)屬性來(lái)分組,例如,以id分組,將id相同的放在一起:

  //List 以ID分組 Map<integer,list           >
Map<integer, list          > 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 來(lái)設(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、過(guò)濾Filter

從集合中過(guò)濾出來(lái)符合條件的元素:

  //過(guò)濾出符合條件的數(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 來(lái)計(jì)算流中的最大或最小值。搜索Java知音公眾號(hào),回復(fù)“后端面試”,送你一份Java面試題寶典

  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)    
        );    
 

下表展示 Collectors 類的靜態(tài)工廠方法。

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

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

分享文章:Java8怎么快速實(shí)現(xiàn)List轉(zhuǎn)map、分組、過(guò)濾等操作
文章位置:http://www.rwnh.cn/article16/ghcdgg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、企業(yè)建站、虛擬主機(jī)、App設(shè)計(jì)、品牌網(wǎng)站設(shè)計(jì)、品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)
洪洞县| 固安县| 抚州市| 保靖县| 蕲春县| 奇台县| 土默特右旗| 宝应县| 防城港市| 古蔺县| 高青县| 浮梁县| 修武县| 靖宇县| 开原市| 禹州市| 和田县| 揭西县| 自贡市| 望江县| 洪雅县| 清水河县| 中方县| 虎林市| 娱乐| 靖远县| 海原县| 株洲县| 吴桥县| 襄城县| 齐齐哈尔市| 仁布县| 启东市| 尉犁县| 通化县| 潍坊市| 宜春市| 太康县| 铜陵市| 西青区| 尼玛县|