最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java8從list集合中取出某一屬性的值的集合案例

 更新時(shí)間:2020年08月17日 09:47:57   作者:*餅餅*  
這篇文章主要介紹了java8從list集合中取出某一屬性的值的集合案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

我就廢話不多說(shuō)了,大家還是直接看代碼吧~

List<Order> list = new ArrayList<User>();
Order o1 = new Order("1","MCS-2019-1123");
list.add(o1 );
Order o2= new Order("2","MCS-2019-1124");
list.add(o2);
Order o3= new Order("3","MCS-2019-1125");
list.add(o3);
List<String> orderNoList=list.stream().map(Order::getOrderNo).collect(Collectors.toList());
System.out.println("輸出單號(hào)集合:"+orderNoList);
List<String> idList=list.stream().map(Order::getId()).collect(Collectors.toList());
System.out.println(idList)

結(jié)果

輸出第一個(gè):

["MCS-2019-1123", "MCS-2019-1124", "MCS-2019-1125"]

[1, 2, 3]

order類(lèi):

public class Order{
   String id;
   String orderNo;
   
   public Order(String id, String orderNo) {
    this.id = id;
    this.orderNo= orderNo;
  }
  public String getId() {
    return id;
  }
  public void setId(String order) {
    this.id= id;
  }
  public String getOrderNo() {
    return orderNo;
  }
  public void setOrderNo(String message) {
    this.orderNo= orderNo;
  }
  
}

補(bǔ)充知識(shí):java8快速對(duì)list集合的篩選計(jì)算取值總結(jié)

在我們?nèi)粘i_(kāi)發(fā)過(guò)程中,有很多場(chǎng)景需要對(duì)list集合進(jìn)行取值篩選,以下是我對(duì)常用的一些知識(shí)點(diǎn)進(jìn)行總結(jié)

首先,創(chuàng)建一個(gè)需要用到的對(duì)象,例如學(xué)生對(duì)象,有相關(guān)字段:姓名,年齡,性別

public class Student {

  private String name;
  private int age;
  private String sex;

  public Student( String name, int age,String sex) {
    this.age = age;
    this.name = name;
    this.sex = sex;
  }
  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public int getAge() {
    return age;
  }

  public void setAge(int age) {
    this.age = age;
  }

  public String getSex() {
    return sex;
  }

  public void setSex(String sex) {
    this.sex = sex;
  }
}

其次,對(duì)這些字段屬性進(jìn)行賦值

   Student s1 = new Student("小金",20,"女");
   Student s2 = new Student("小宋",21,"女");
   Student s3 = new Student("小張",25,"男");
   Student s4 = new Student("小王",27,"男");
   Student s5 = new Student("小王",30,"未知");
   List<Student> list = new ArrayList<>();
   list.add(s1);
   list.add(s2);
   list.add(s3);
   list.add(s4);
   list.add(s5);

1、遍歷-foreach

使用stream流進(jìn)行foreach遍歷

list.stream().forEach(student->{
  //處理邏輯,打印出所有學(xué)生的姓名
  System.out.println(student.getName());
});

運(yùn)行結(jié)果:

2、篩選list

filter函數(shù)的()里,應(yīng)該放邏輯,判斷條件,將符合條件的放到resultList中

代碼如下,篩選集合中所有性別為女的學(xué)生

List<Student> resultList = list.stream().filter(student -> Objects.equals(student.getSex(),"女")).collect(Collectors.toList());
resultList.stream().forEach(student->{
  System.out.println(student.getName());
});

運(yùn)行結(jié)果:

3、list去重

根據(jù)性別去重

List<Student> unique = list.stream().collect(Collectors.collectingAndThen(
   Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(Student::getSex))), ArrayList::new)); 
unique.stream().forEach(student->{
  System.out.println(student.getName());
});

運(yùn)行結(jié)果:

4、取出list集合對(duì)象中某一個(gè)屬性

取出每個(gè)對(duì)象中的姓名組成一個(gè)新的集合

List<String> listStr = list.stream().map(Student::getName).collect(Collectors.toList());

去重

List<String> listNew = listStr .stream().map(Student::getName).distinct().collect(Collectors.toList());

運(yùn)行結(jié)果:

5、list與map互轉(zhuǎn),并根據(jù)某一屬性進(jìn)行分組

list轉(zhuǎn)map (下方studentMap運(yùn)行會(huì)報(bào)錯(cuò),因?yàn)樽鳛閗ey值,name不能重復(fù),所以正式開(kāi)發(fā)中應(yīng)該使用唯一性id作為key值)

Map<String, Student> studentMap = list.stream().collect(Collectors.toMap(Student::getName, student -> student));

list轉(zhuǎn)數(shù)組

String[] listStrs = list.stream()
        .filter(e -> Objects.equals(e.getSex(), "男"))
        .sorted(Comparator.comparing(Student::getName))
        .map(Student::getName).toArray(String[]::new);

list轉(zhuǎn)map并且分組

Map<String, List<Student>> listMap = list.stream().collect(Collectors.groupingBy(Student::getSex));

運(yùn)行結(jié)果:

根據(jù)對(duì)象某些屬性,進(jìn)行分組

Map<List, List> studentsMap= list.stream()

.collect(Collectors.groupingBy(f -> Arrays.asList(f.getAge),f.getSex())));

map轉(zhuǎn)list

List<Student> collect = studentMap.values().stream().collect(Collectors.toList());

6、過(guò)濾屬性為空的字段

Student s6 = new Student("",30,"男");
list.add(s6);

List<String> stringList = list.stream().map(s -> s.getName()).filter(s -> !s.isEmpty()).collect(Collectors.toList());

7、根據(jù)某一屬性進(jìn)行計(jì)算

根據(jù)年齡求最大值、最小值、平均值、總和、個(gè)數(shù)

IntSummaryStatistics resultNum = list.stream().mapToInt((item)->item.getAge()).summaryStatistics();
System.out.println("max:"+resultNum.getMax());
System.out.println("min:"+resultNum.getMin());
System.out.println("sum:"+resultNum.getSum());
System.out.println("average:"+resultNum.getAverage());
System.out.println("count:"+resultNum.getCount());

運(yùn)行結(jié)果:

注意:

1、求和有三種類(lèi)型,mapToInt,mapToLong,mapToDouble

2、如果是Bigdecimal數(shù)值類(lèi)型,則計(jì)算方法如下,(新建對(duì)象)

Frult frult1 = new Frult("西瓜",new BigDecimal(1));
Frult frult2 = new Frult("梨子",new BigDecimal(2));
List<Frult> frultList = new ArrayList<>();
frultList.add(frult1);
frultList.add(frult2);
BigDecimal totalPrice = frultList.stream().map(Frult::getPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
//或者用mapToInt()進(jìn)行強(qiáng)轉(zhuǎn)(int->Bigdecimal)

結(jié)語(yǔ):本人目前用到這么多,希望各位有更好的或者其它的用法給予建議與評(píng)論,有錯(cuò)誤也希望能得到指正!也希望大家多多支持腳本之家。

相關(guān)文章

  • spring+mybatis 通過(guò)@ResponseBody返回結(jié)果中文亂碼的解決方法

    spring+mybatis 通過(guò)@ResponseBody返回結(jié)果中文亂碼的解決方法

    下面小編就為大家分享一篇spring+mybatis 通過(guò)@ResponseBody返回結(jié)果中文亂碼的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • 基于RecyclerChart的KLine的繪制Scale詳解

    基于RecyclerChart的KLine的繪制Scale詳解

    這篇文章主要為大家詳細(xì)介紹了基于RecyclerChart實(shí)現(xiàn)KLine繪制Scale的相關(guān)資料,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-03-03
  • 使用Swagger直接上傳文件的方法

    使用Swagger直接上傳文件的方法

    這篇文章主要介紹了使用Swagger直接上傳文件的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • 一文帶你了解Spring的Bean初始化過(guò)程和生命周期

    一文帶你了解Spring的Bean初始化過(guò)程和生命周期

    Spring的核心功能有三點(diǎn)IOC、DI、AOP,IOC則是基礎(chǔ),也是Spring功能的最核心的點(diǎn)之一。今天一起來(lái)總結(jié)下Spring中Bean是怎么被創(chuàng)建出來(lái)的
    2023-03-03
  • 利用java實(shí)現(xiàn)郵箱群發(fā)功能

    利用java實(shí)現(xiàn)郵箱群發(fā)功能

    這篇文章主要為大家詳細(xì)介紹了利用java實(shí)現(xiàn)郵箱群發(fā)功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • mybatisplus根據(jù)條件只更新一個(gè)字段的實(shí)現(xiàn)

    mybatisplus根據(jù)條件只更新一個(gè)字段的實(shí)現(xiàn)

    MyBatis-Plus提供使用update方法結(jié)合Wrapper來(lái)指定更新條件和要更新的字段,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-12-12
  • 如何解決異步線程導(dǎo)致的traceId為空的問(wèn)題

    如何解決異步線程導(dǎo)致的traceId為空的問(wèn)題

    文章討論了在使用異步線程時(shí),traceId為空的問(wèn)題,并提出了使用線程池的解決方案,作者分享了個(gè)人經(jīng)驗(yàn),并鼓勵(lì)大家參考和支持腳本之家
    2025-02-02
  • Java設(shè)計(jì)模式中責(zé)任鏈模式詳解

    Java設(shè)計(jì)模式中責(zé)任鏈模式詳解

    責(zé)任鏈模式是將鏈中的每一個(gè)節(jié)點(diǎn)看做是一個(gè)對(duì)象,每個(gè)節(jié)點(diǎn)處理的請(qǐng)求均不相同,且內(nèi)部自動(dòng)維護(hù)下一個(gè)節(jié)點(diǎn)對(duì)象,當(dāng)一個(gè)請(qǐng)求從鏈?zhǔn)降氖锥伟l(fā)出時(shí),會(huì)沿著鏈的路徑依次傳遞給每一個(gè)節(jié)點(diǎn)對(duì)象。本文將通過(guò)示例和大家詳細(xì)聊聊責(zé)任鏈模式,需要的可以參考一下
    2022-11-11
  • java interface的兩個(gè)經(jīng)典用法

    java interface的兩個(gè)經(jīng)典用法

    這篇文章主要為大家詳細(xì)介紹了java interface的兩個(gè)經(jīng)典用法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • JavaWeb實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)(3)

    JavaWeb實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)(3)

    這篇文章主要為大家詳細(xì)介紹了JavaWeb實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)第三篇,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08

最新評(píng)論

黑龙江省| 德令哈市| 禹城市| 江达县| 清水县| 乌兰浩特市| 敖汉旗| 林甸县| 阳江市| 漳浦县| 菏泽市| 新沂市| 衡东县| 湖北省| 江孜县| 姚安县| 潞西市| 外汇| 河北省| 九台市| 通渭县| 甘孜| 班戈县| 星子县| 赞皇县| 宁强县| 梓潼县| 鄂尔多斯市| 浮梁县| 霍邱县| 涿鹿县| 迭部县| 含山县| 道孚县| 冀州市| 芒康县| 海兴县| 新兴县| 藁城市| 崇明县| 聂拉木县|