ホームページ  >  記事  >  Java  >  Java 8 ストリームを使用して属性ごとにオブジェクトをグループ化するにはどうすればよいですか?

Java 8 ストリームを使用して属性ごとにオブジェクトをグループ化するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-23 10:01:27168ブラウズ

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 メソッドを使用すると、指定されたキー関数の値に基づいてオブジェクトをグループ化するマップを作成できます。この場合、stud_location フィールドをキー関数として指定し、各キーが場所を表し、対応する値がその場所にいる生徒のリストであるマップが作成されます。

このアプローチは、効率的でエレガントな特定の属性を使用してオブジェクトのリストをグループ化する方法。結果として得られるマップは、さらなるフィルタリング、並べ替え、データの視覚化など、さまざまな目的に利用できます。

以上がJava 8 ストリームを使用して属性ごとにオブジェクトをグループ化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。