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

回答編集履歴

2

typo

2020/02/05 13:26

投稿

shiketa
shiketa

スコア4133

answer CHANGED
@@ -7,12 +7,12 @@
7
7
  final List<ArrayList<Integer>> data =
8
8
  IntStream.rangeClosed(0, 3)
9
9
  .mapToObj(i ->
10
- new ArrayList<>(
11
- IntStream.rangeClosed(1, 3)
10
+ IntStream.rangeClosed(1, 3)
12
- .mapToObj(num -> Integer.valueOf(i * num))
11
+ .mapToObj(num -> Integer.valueOf(i * num))
13
- .collect(Collectors.toList())
12
+ .collect(Collectors.toList()
14
- )
13
+ )
15
14
  )
15
+ .map(ArrayList::new)
16
16
  .collect(Collectors.toList());
17
17
  System.out.println(data);
18
18
 
@@ -34,4 +34,21 @@
34
34
  IntStream.rangeClosed(0, 3)
35
35
  .parallel()
36
36
  .mapToObj(i ->
37
+ ```
38
+
39
+ ---
40
+
41
+ 余談ですが、StreamAPIを使い始めて、collectとか使わなくちゃいけなくて、なんかめんどうくさいなぁ、とおもいはじめてKotlinをみると、ラクそうにみえてくるとおもいます。
42
+
43
+ ```kotlin
44
+ fun main(args: Array<String>) {
45
+ val data: List<MutableList<Int>> =
46
+ (0..3).map { i ->
47
+ (1..3).map { num -> num * i }.toMutableList()
48
+ }
49
+ println(data)
50
+
51
+ data.forEach { it.add(999) }
52
+ println(data)
53
+ }
37
54
  ```

1

typo

2020/02/05 13:26

投稿

shiketa
shiketa

スコア4133

answer CHANGED
@@ -23,15 +23,11 @@
23
23
 
24
24
  > ① stream api と foreachの違いはなんでしょうか?foreachではdataが書き換わってしまうという事ぐらいでしょうか?(stream api は新しいcollectionに対しての操作という認識)
25
25
 
26
- `data.forEach(it -> it.add(999));`は、`data.stream().forEach(it -> it.add(999));`
26
+ `data.forEach(it -> it.add(999));`は、`data.stream().forEach(it -> it.add(999));`の短縮形|省略形だと捉えてみてはどうでしょうか?forEach()メソッドもStreamAPIの一部だ、と。ただ、forEach()メソッドの中身をみると実際の実装は違うようですけれど。
27
- の短縮形|省略形だと捉えてみてはどうでしょうか?
28
- forEach()メソッドの中身をみると実際の実装は違いますけれど。
29
27
 
30
28
  > ② 上記のプログラムのように foreachで処理することに問題はあるでしょうか?
31
29
 
32
- 問題はないとおもいます。
33
- だたとえば、StreamAPIを使うとparallel()を挟むだけで簡単に並列処理ができたりしますね
30
+ たとえば、StreamAPIを使うとparallel()を挟むだけで簡単に並列処理ができたりしますね(この程度の処理ではむしろ効率悪くなりますけど)。
34
- (この程度の処理ではむしろ効率悪くなりますけど)。
35
31
 
36
32
  ```java
37
33
  final List<ArrayList<Integer>> data =