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

回答編集履歴

2

printfに変更。再帰をやってみた。

2021/06/05 20:53

投稿

xebme
xebme

スコア1113

answer CHANGED
@@ -14,10 +14,10 @@
14
14
  int[][] a = {{1,2,3},{4,5},{6}};
15
15
 
16
16
  String lines = Stream.of(a)
17
- .map(l -> IntStream.of(l).mapToObj(String::valueOf).collect(joining(" ")))
17
+ .map(l -> IntStream.of(l).mapToObj(String::valueOf).collect(joining(" ","",System.lineSeparator())))
18
- .collect(joining(System.lineSeparator()));
18
+ .collect(joining());
19
19
 
20
- System.out.println(lines);
20
+ System.out.printf("%s",lines);
21
21
 
22
22
  }
23
23
 
@@ -39,4 +39,22 @@
39
39
  .toString();
40
40
  ```
41
41
 
42
- 最初のコードのほうが率直で良いと思いますが、collectを理解すると様々な応用が可能になります。
42
+ 最初のコードのほうが率直で良いと思いますが、collectを理解すると様々な応用が可能になります。
43
+
44
+ **再帰させたらどうなる(追記)**
45
+
46
+ 再帰させてみました。昇順と降順でちょっとだけ違います。
47
+
48
+ ```Java
49
+ static Function<int[],String> arrayRow = a -> IntStream.of(a).mapToObj(String::valueOf).collect(joining(" ","",System.lineSeparator()));
50
+
51
+ static String asc(int[][] a, int i) {
52
+ return (i>= a.length) ? "" : arrayRow.apply(a[i]) + asc(a,i+1);
53
+ }
54
+
55
+ static String desc(int[][] a, int i) {
56
+ return (i>= a.length) ? "" : desc (a,i+1) + arrayRow.apply(a[i]);
57
+ }
58
+ ```
59
+
60
+ それから、printlnをprintfに変更しました。

1

joining()にsuffixを指定できる

2021/06/05 20:53

投稿

xebme
xebme

スコア1113

answer CHANGED
@@ -32,9 +32,11 @@
32
32
  String lines = Stream.of(a)
33
33
  .collect(
34
34
  StringBuffer::new,
35
+ (s,l) -> s.append(
35
- (s,l) -> s.append(IntStream.of(l).mapToObj(String::valueOf).collect(joining(" ")) + System.lineSeparator()),
36
+ IntStream.of(l).mapToObj(String::valueOf).collect(joining(" ","",System.lineSeparator()))
37
+ ),
36
38
  (x,y) -> x.append(y))
37
39
  .toString();
38
40
  ```
39
41
 
40
- 最初のコードが率直で良いと思いますが、collectを理解すると様々な応用が可能になります。
42
+ 最初のコードのほうが率直で良いと思いますが、collectを理解すると様々な応用が可能になります。