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

回答編集履歴

2

コード訂正

2017/05/11 21:15

投稿

KSwordOfHaste
KSwordOfHaste

スコア18404

answer CHANGED
@@ -6,10 +6,10 @@
6
6
 
7
7
  ```java
8
8
  public static List<Integer> getAllSeqFirst5Diff3LteAsList(int num1) {
9
- IntFunction<Integer> f = Sequence4::getSeqFirst5Diff3ByIndex;
9
+ IntUnaryOperator f = Sequence4::getSeqFirst5Diff3ByIndex;
10
10
  List<Integer> numericList = new ArrayList<Integer>();
11
- for (int i = 1; f.apply(i) < num1; i++) {
11
+ for (int i = 1; f.applyAsInt(i) < num1; i++) {
12
- numericList.add(f.apply(i));
12
+ numericList.add(f.applyAsInt(i));
13
13
  }
14
14
  return numericList;
15
15
  }
@@ -17,6 +17,8 @@
17
17
 
18
18
  ScalaやJavascriptであれば単純明快に`f(引数)`と書けますがJavaでは`f.apply(引数)`としか書けないので少し残念です。
19
19
 
20
+ 訂正:swordoneさんコメントによりIntFunctionからIntUnaryOperatorに変更しました。そうした方が不要なboxingがなくなるので効率がよくなります。
21
+
20
22
  - メソッド呼び出しを1か所で済むようにする(1)
21
23
 
22
24
  ヒント:関数(メソッド)の適用結果を変数に代入しておく

1

コード変更

2017/05/11 21:15

投稿

KSwordOfHaste
KSwordOfHaste

スコア18404

answer CHANGED
@@ -40,9 +40,10 @@
40
40
 
41
41
  ```java
42
42
  public static List<Integer> getAllSeqFirst5Diff3LteAsList(int num1) {
43
- return Stream.iterate(1, i -> i + 1)
43
+ return IntStream.iterate(1, i -> i + 1)
44
- .map(i -> getSeqFirst5Diff3ByIndex(i))
44
+ .mapToObj(i -> getSeqFirst5Diff3ByIndex(i))
45
45
  .filter(n -> n <= num1)
46
46
  .collect(Collectors.toList());
47
47
  }
48
- ```
48
+ ```
49
+ 訂正:元のコードはStream.iterate, mapを使ってましたがIntStream.iterate, mapToObjに変更しました。