Javaでストリームから重複した要素を削除する方法について記載します。
重複した要素を削除する方法
distinct メソッドを使用します。
構文
distinct()
戻り値
Stream<T>
実行例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// 数値 List<Integer> intList = Arrays.asList(10,20,30,10); intList.stream() .distinct() .forEach(System.out::println); // 10 // 20 // 30 // 文字列 List<String> strList = Arrays.asList("a","b","a","c","a"); strList.stream() .distinct() .forEach(System.out::println); // a // b // c |
また、次のように独自クラスの特定の変数を指定して重複を除外することもできます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
// クラスの定義 class Color { private int id; private String name; public Color(int id, String name) { this.id = id; this.name = name; } public int getId() { return id; } public String getName() { return name; } } // Colorクラスの変数idを指定して重複を除外 List<Color> colorList = Arrays.asList(new Color(1, "red"), new Color(2, "blue"), new Color(3, "yellow"), new Color(1, "orange")); colorList.stream() .map( obj -> obj.getId() ) // Colorクラスの変数id .distinct() .forEach(System.out::println); // 1 // 2 // 3 |