首頁  >  文章  >  Java  >  如何使用 Java 8 流按屬性對物件分組?

如何使用 Java 8 流按屬性對物件分組?

Linda Hamilton
Linda Hamilton原創
2024-11-23 10:01:27198瀏覽

How Can I Group Objects by an Attribute Using Java 8 Streams?

使用 Java 8 依屬性將物件分組

在 Java 中,依屬性對物件進行分組可以提供組織和分析資料的結構化方式。例如,假設您有一個學生及其位置的清單。您可能希望根據學生的位置對學生進行分組以便進一步處理。

以下是利用 Java 8 的進階功能來實現此目的的程式碼片段:

import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.stream.Collectors;

public class Grouping {
    public static void main(String[] args) {

        List<Student> studlist = new ArrayList<>();
        studlist.add(new Student("1726", "John", "New York"));
        studlist.add(new Student("4321", "Max", "California"));
        studlist.add(new Student("2234", "Andrew", "Los Angeles"));
        studlist.add(new Student("5223", "Michael", "New York"));
        studlist.add(new Student("7765", "Sam", "California"));
        studlist.add(new Student("3442", "Mark", "New York"));

        Map<String, List<Student>> studlistGrouped =
            studlist.stream().collect(Collectors.groupingBy(w -> w.stud_location));
    }
}

class Student {
    String stud_id;
    String stud_name;
    String stud_location;

    Student(String sid, String sname, String slocation) {
        this.stud_id = sid;
        this.stud_name = sname;
        this.stud_location = slocation;
    }
}

收集器。 Java 8 中引入的 groupingBy 方法可讓您建立根據指定鍵函數的值對物件進行分組的 Map。在本例中,我們將 Stud_location 欄位指定為鍵函數,從而產生地圖,其中每個鍵代表一個位置,對應的值是該位置的學生清單。

這種方法提供了一種高效而優雅的方法使用特定屬性對物件清單進行分組的方法。產生的地圖可用於各種目的,例如進一步過濾、排序或資料視覺化。

以上是如何使用 Java 8 流按屬性對物件分組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn