欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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("輸出單號集合:"+orderNoList);
List<String> idList=list.stream().map(Order::getId()).collect(Collectors.toList());
System.out.println(idList)

結果

輸出第一個:

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

[1, 2, 3]

order類:

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

補充知識:java8快速對list集合的篩選計算取值總結

在我們日常開發(fā)過程中,有很多場景需要對list集合進行取值篩選,以下是我對常用的一些知識點進行總結

首先,創(chuàng)建一個需要用到的對象,例如學生對象,有相關字段:姓名,年齡,性別

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

其次,對這些字段屬性進行賦值

   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流進行foreach遍歷

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

運行結果:

2、篩選list

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

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

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

運行結果:

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

運行結果:

4、取出list集合對象中某一個屬性

取出每個對象中的姓名組成一個新的集合

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

去重

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

運行結果:

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

list轉map (下方studentMap運行會報錯,因為作為key值,name不能重復,所以正式開發(fā)中應該使用唯一性id作為key值)

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

list轉數(shù)組

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

list轉map并且分組

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

運行結果:

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

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

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

map轉list

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

6、過濾屬性為空的字段

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ù)年齡求最大值、最小值、平均值、總和、個數(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());

運行結果:

注意:

1、求和有三種類型,mapToInt,mapToLong,mapToDouble

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

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()進行強轉(int->Bigdecimal)

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

相關文章

  • 深入理解Java中的接口

    深入理解Java中的接口

    下面小編就為大家?guī)硪黄钊肜斫釰ava中的接口。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-05-05
  • Java服務剛啟動時接口超時排查全過程

    Java服務剛啟動時接口超時排查全過程

    這篇文章主要為大家介紹了Java服務剛啟動時,一小波接口超時排查全過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • java設計模式之建造者模式學習

    java設計模式之建造者模式學習

    建造者模式(Builder Pattern)主要用于“分步驟構建一個復雜的對象”,在這其中“分步驟”是一個穩(wěn)定的算法,下面給出了詳細的示例
    2014-01-01
  • SpringBoot使用Spring Security實現(xiàn)登錄注銷功能

    SpringBoot使用Spring Security實現(xiàn)登錄注銷功能

    這篇文章主要介紹了SpringBoot使用Spring Security實現(xiàn)登錄注銷功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2020-09-09
  • Java?C++題解leetcode1441用棧操作構建數(shù)組示例

    Java?C++題解leetcode1441用棧操作構建數(shù)組示例

    這篇文章主要為大家介紹了Java?C++題解leetcode1441用棧操作構建數(shù)組示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • Java中Object.wait()和LockSupport.park()的用法

    Java中Object.wait()和LockSupport.park()的用法

    Object.wait()和LockSupport.park()都是用來使當前線程等待的方法,本文主要介紹了Java中Object.wait()和LockSupport.park()的用法,具有一定的參考價值,感興趣的可以了解一下
    2024-05-05
  • Java編程在方法中哪些時候需要參數(shù)

    Java編程在方法中哪些時候需要參數(shù)

    這篇文章主要介紹了Java編程在方法中哪些時候需要參數(shù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • springboot2.x引入feign踩的坑及解決

    springboot2.x引入feign踩的坑及解決

    這篇文章主要介紹了springboot2.x引入feign踩的坑及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Spring boot2+jpa+thymeleaf實現(xiàn)增刪改查

    Spring boot2+jpa+thymeleaf實現(xiàn)增刪改查

    這篇文章主要介紹了Spring boot2+jpa+thymeleaf實現(xiàn)增刪改查,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • 一文詳解如何通過Java實現(xiàn)SSL交互功能

    一文詳解如何通過Java實現(xiàn)SSL交互功能

    這篇文章主要為大家詳細介紹了如何通過Java實現(xiàn)SSL交互功能,文中的示例代碼講解詳細,對我們的學習或工作有一定的幫助,需要的可以參考一下
    2023-04-04

最新評論