teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

修正

2019/10/22 16:17

投稿

Zuishin
Zuishin

スコア28675

answer CHANGED
@@ -43,7 +43,7 @@
43
43
  {
44
44
  return Arrays
45
45
  .stream(args) // 可変長引数 args を Stream に変換
46
- .distinct() // 連続した要素を削除([1, 2, 2, 1, 1, 1] → [1, 2, 1])
46
+ .distinct() // 重複した要素を削除([1, 2, 2, 1, 1, 1] → [1, 2])
47
47
  .count() == 1; // 残った要素数が一つであればすべて同じだったと判定
48
48
  }
49
49
  }

2

追記

2019/10/22 16:17

投稿

Zuishin
Zuishin

スコア28675

answer CHANGED
@@ -25,9 +25,37 @@
25
25
 
26
26
  ジェネリクスを使わないバージョン。
27
27
 
28
+ [Wandbox](https://wandbox.org/permlink/6f3Q9MIMh0BbHSjt)(リンク先に実行結果があります)
29
+
28
30
  ```Java
29
- static boolean check(Object ... args)
31
+ import java.util.*;
32
+
33
+ class Wandbox
30
34
  {
31
- return Arrays.stream(args).distinct().count() == 1;
35
+ public static void main(String[] args)
36
+ {
37
+ System.out.println(check(1, 1, 1)); // true
38
+ System.out.println(check(1, 2, 2, 1, 1, 1)); // false
39
+ System.out.println(check("abc", "abc", "abc")); // true
40
+ }
41
+
42
+ static boolean check(Object ... args) // 引数がいくつあっても配列として取得できる
43
+ {
44
+ return Arrays
45
+ .stream(args) // 可変長引数 args を Stream に変換
46
+ .distinct() // 連続した要素を削除([1, 2, 2, 1, 1, 1] → [1, 2, 1])
47
+ .count() == 1; // 残った要素数が一つであればすべて同じだったと判定
48
+ }
32
49
  }
33
- ```
50
+ ```
51
+
52
+ ### Stream API について
53
+
54
+ Stream API は関数型プログラミングの手法を取り入れた、モダンで読みやすく堅牢なプログラミングを可能にする技術です。これからのプログラマーは必ずマスターしましょう。
55
+
56
+ むしろ、これが読めないと、今後は老害と呼ばれたり、人よりプログラミング効率が落ちたり仕事が減ったりと、困ったことになります。決して一部の人が誤解しているような、特殊な人が特殊な趣味で使うものではありませんし、新しすぎる尖った手法でもありません。Java 8 から存在し、ごくごく普通に使われているものです。
57
+
58
+ 参考: [Java 11 時代の Java プログラミングスタイルガイド - Qiita](https://qiita.com/ptiringo/items/71c2792e7c553399c2e2#stream-api)
59
+
60
+ > **極力 for 文を使用せず、Stream API によって処理する。**
61
+ Java 8 での Stream API の出現によって for 文が活躍する機会はほとんどなくなった。Stream API の宣言的な記述はうまく使用すれば可読性が高く、パフォーマンスの観点からも優れるため、例外的な場面を除いてコレクション操作は Stream API によって行うのがよいだろう。

1

追記

2019/10/22 15:34

投稿

Zuishin
Zuishin

スコア28675

answer CHANGED
@@ -19,4 +19,15 @@
19
19
  return Arrays.stream(args).distinct().count() == 1;
20
20
  }
21
21
  }
22
+ ```
23
+
24
+ # 追記
25
+
26
+ ジェネリクスを使わないバージョン。
27
+
28
+ ```Java
29
+ static boolean check(Object ... args)
30
+ {
31
+ return Arrays.stream(args).distinct().count() == 1;
32
+ }
22
33
  ```