回答編集履歴
2
コード訂正
test
CHANGED
@@ -14,13 +14,13 @@
|
|
14
14
|
|
15
15
|
public static List<Integer> getAllSeqFirst5Diff3LteAsList(int num1) {
|
16
16
|
|
17
|
-
Int
|
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
コード変更
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に変更しました。
|