回答編集履歴

2

コード訂正

2017/05/11 21:15

投稿

KSwordOfHaste
KSwordOfHaste

スコア18394

test CHANGED
@@ -14,13 +14,13 @@
14
14
 
15
15
  public static List<Integer> getAllSeqFirst5Diff3LteAsList(int num1) {
16
16
 
17
- IntFunction<Integer> f = Sequence4::getSeqFirst5Diff3ByIndex;
17
+ IntUnaryOperator f = Sequence4::getSeqFirst5Diff3ByIndex;
18
18
 
19
19
  List<Integer> numericList = new ArrayList<Integer>();
20
20
 
21
- for (int i = 1; f.apply(i) < num1; i++) {
21
+ for (int i = 1; f.applyAsInt(i) < num1; i++) {
22
22
 
23
- numericList.add(f.apply(i));
23
+ numericList.add(f.applyAsInt(i));
24
24
 
25
25
  }
26
26
 
@@ -33,6 +33,10 @@
33
33
 
34
34
 
35
35
  ScalaやJavascriptであれば単純明快に`f(引数)`と書けますがJavaでは`f.apply(引数)`としか書けないので少し残念です。
36
+
37
+
38
+
39
+ 訂正:swordoneさんコメントによりIntFunctionからIntUnaryOperatorに変更しました。そうした方が不要なboxingがなくなるので効率がよくなります。
36
40
 
37
41
 
38
42
 

1

コード変更

2017/05/11 21:15

投稿

KSwordOfHaste
KSwordOfHaste

スコア18394

test CHANGED
@@ -82,9 +82,9 @@
82
82
 
83
83
  public static List<Integer> getAllSeqFirst5Diff3LteAsList(int num1) {
84
84
 
85
- return Stream.iterate(1, i -> i + 1)
85
+ return IntStream.iterate(1, i -> i + 1)
86
86
 
87
- .map(i -> getSeqFirst5Diff3ByIndex(i))
87
+ .mapToObj(i -> getSeqFirst5Diff3ByIndex(i))
88
88
 
89
89
  .filter(n -> n <= num1)
90
90
 
@@ -93,3 +93,5 @@
93
93
  }
94
94
 
95
95
  ```
96
+
97
+ 訂正:元のコードはStream.iterate, mapを使ってましたがIntStream.iterate, mapToObjに変更しました。