1. 程式人生 > >Java 8 stream()分組,過濾篩選 List 根據Object 中的某幾個屬性作為條件進行分組 去重過濾

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 8Stream 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表示式,並且更方便地實現對集合的查詢