Java 8 stream()分組,過濾篩選 List 根據Object 中的某幾個屬性作為條件進行分組 去重過濾
List物件 篩選學生年齡 和性別一樣的 進行分組,並且挑選出身高最高的 學生
Object類:Student
public class Student {
private String name;
private int age;
private Long hight;
private int sex;
省去相應 get/set方法
// 設定 年齡和性別的拼接,得出相應分組
public Long getIwantStudent(){
return Long.valueOf(this.sex + this.age);
}
public class GetTrueStudent {
public static void main(String[] args) {
List<Student> allList = new ArrayList<>();
//新增集合資訊 省去。。。
Student st1 = new Student();
st1.setAge(20);
st1.setHight(178L);
st1.setSex(1);
st1.setName("韓梅梅" );
allList.add(st1);
Student st11 = new Student();
st11.setAge(20);
st11.setHight(168L);
st11.setSex(1);
st11.setName("馬冬梅");
allList.add(st11);
Student st2 = new Student();
st2.setAge(21);
st2.setHight(179L);
st2.setSex (2);
st2.setName("李磊");
allList.add(st2);
Student st22 = new Student();
st22.setAge(21);
st22.setHight(189L);
st22.setSex(2);
st22.setName("小李");
allList.add(st22);
// 以年齡 和 性別 分組,並選取最高身高的 學生
Map<Long, Optional<Student>> allMapTask = allList.stream().collect(
Collectors.groupingBy(Student::getIwantStudent, Collectors.maxBy((o1, o2) -> o1.getHight().compareTo(o2.getHight()))));
// 遍歷獲取物件資訊
for (Map.Entry<Long,Optional<Student>> entry: allMapTask.entrySet()) {
Student student = entry.getValue().get();
System.out.println(student.toString());
}
}
}
重點知識點
Collectors.groupingBy 方法 根據Student物件中方法 作為分組條件,
Collectors.maxBy方法 篩選 每個分組中符合條件的 資料
相關推薦
Java 8 stream()分組,過濾篩選 List 根據Object 中的某幾個屬性作為條件進行分組 去重過濾
List物件 篩選學生年齡 和性別一樣的 進行分組,並且挑選出身高最高的 學生 Object類:Student public class Student { private Strin
Java執行緒池(2)——執行緒池中的幾個重要方法詳解
【內容摘要】 在java中,如果需要進行多執行緒程式設計,可以採用java自帶的執行緒池來實現,執行緒池對於我們新手來說是一個非常好的選擇,因為我們可以不用關心執行緒池中執行緒是如何排程的,避免在多執行緒程式設計過程產生死鎖等問題。在瞭解執行緒池的使用前,本文
Java 8 Stream partitioningBy對List分割槽
partitioningBy分割槽是一種特殊的分組,可以將List劃分為兩個子List,使用起來比較簡單,如下: @Test public void partitionByTest(){ List<Integer> intList = Lists.new
java 8 stream 流操作list (不斷更新
最近stream操作list用的特別爽,但是網上介紹複雜點的流操作並沒有太多資料,介於我稍有研究,想把一些流的操作記錄一下,以後參考1,對list進行多key排序list = list.stream().sorted( Comparator.co
JAVA 8 Stream API 對Stream進行分組、分割槽
這篇文章展示瞭如何使用 Streams API 中的 Collector 及 groupingBy 和 partitioningBy 來對流中的元素進行分組和分割槽。 思考一下 Employee 物件流,每個物件對應一個名字、城市和銷售數量,如下表所示: +------
IntelliJ IDEA 除錯 Java 8 Stream,實在太香了!
前段時間,棧長髮布了一篇關於 [Java 8 Optional.map](https://mp.weixin.qq.com/s/UYBLw17wVL6baBpjFRkySQ) 的實用文章,留言區就有的人說 Java 8 的語法糖不方便除錯,還要視情況使用。 ![](https://img2020.cnblo
List使用Stream流進行集合Collection的各種運算彙總:對BigDecimal求和,某個欄位的和、最大值、最小值、平均值,欄位去重,過濾等
寫Java介面的朋友都知道,Java 8的更新,經常會用到過濾 list<Object> 裡的資料,本文就對List使用Stream流進行集合Collection的各種運算做一個彙總! 優勢: &nbs
Java 8 Stream API具體解釋
介紹 lis 控制臺輸出 output 排序。 case 編程效率 func 遍歷 Java 8 Stream API具體解釋 一、Stream API介紹 Java 8引入了全新的Stream API,此Stream與Java I/O包裏的In
Java 8 : Stream API 練習
rri setname 增強 內部 new collector names pri ons //店鋪屬性類 public class Property { String name; // 距離,單位:米 Integer distance; //
Java 8 停止維護,Java 9 難產,IDEA 2018 發布,還有……
試題 pda 垃圾回收 tell tdi 寫代碼 我們 mvc 技術棧 祝大家五一勞動節快樂,工作順利! 又到了總結上個月幹貨的時候了,這個月我們帶來了各種Java技術幹貨,各種送書抽獎福利,各種面試題分享,各種最新動態資訊等。 5.1重磅活動 | 區塊鏈免費送書 &am
咱們一起聊聊Java 8 Stream特性
break base private find arraylist import java程序員 tom 返回 Java 8 API添加了一個新的抽象稱為流Stream,可以讓你以一種聲明的方式處理數據。Stream 使用一種類似用 SQL 語句從數據庫查詢數據的直觀方式來
Java 8 Stream API說明
Java 8增加了很多強大的功能,流(stream)就是其中之一。現在對api的使用做個說明: map 對流中的元素做轉換,目前jdk提供了mapToInt,mapToLong,mapToDouble轉換為對應的流。 Stream.of("a","b").map(String::toUpperC
Java 8 Stream介紹及使用
fin integer locate linked 包含 println swa character edi (原) stream的內容比較多,先簡單看一下它的說明: A sequence of elements supporting sequential and
Java-8:Stream的使用
import java.util.Arrays; import java.util.stream.Stream; import java.util.*; public class StreamDemo { public static void main(String[] args) {
Java 8 – Stream Collectors groupingBy count examples
Java 8 – Stream Collectors groupingBy count examples 1. Group By, Count and Sort1.1 Group by a List and display the total count of it. Java8Example1.java
java 8 Stream介紹
Java 8 中的 Streams API 詳解 Streams 的背景,以及 Java 8 中的使用詳解 為什麼需要 Stream Stream 作為 Java 8 的一大亮點,它與 java.io 包裡的 InputStream 和 OutputStream 是完全不同的概念。它也不
Java 8 Stream – Read a file line by line
In Java 8, you can use Files.lines to read file as Stream. c://lines.txt – A simple text file for testing line1 line2 line3 line4 line5 &nbs
java 集合分組;list根據某一條件進行分組
集合中為物件,根據物件中的某一屬性值分組 例子 1、實體類:構造方法、get/set方法、toString方法省略 public class User { private String id; private String name;
Java 8-Stream流
出處:Java 8 中的 Stream API詳解 什麼是流 Stream 不是集合元素,它不是資料結構並不儲存資料,它是有關演算法和計算的,它更像一個高階版本的 Iterator。原始版本的 Iterator,使用者只能顯式地一個一個遍歷元素並對其執行某些操作;高階版本的 Strea
Java 8 Stream詳解
概述 繼Java 8系列之Lambda表示式之後,我們來了解Stream。Stream 是用函數語言程式設計方式在集合類上進行復雜操作的工具,其集成了Java 8中的眾多新特性之一的聚合操作,開發者可以更容易地使用Lambda表示式,並且更方便地實現對集合的查詢