回答編集履歴
2
第2案を追記
answer
CHANGED
@@ -36,4 +36,39 @@
|
|
36
36
|
}
|
37
37
|
```
|
38
38
|
自分の実力だとこの程度です。良い方法があればどうぞご提案ください。
|
39
|
-
new SimpleEntry<>(s,null)に訂正しました。
|
39
|
+
new SimpleEntry<>(s,null)に訂正しました。
|
40
|
+
|
41
|
+
**Array2#asMap第2案(追記)**
|
42
|
+
|
43
|
+
関数型プログラミングの常套句を使います。引数の配列の要素数が奇数の場合、最後の要素を切り捨てます。
|
44
|
+
```Java
|
45
|
+
import java.util.Arrays;
|
46
|
+
import java.util.Map;
|
47
|
+
import java.util.Stack;
|
48
|
+
import java.util.TreeMap;
|
49
|
+
import java.util.function.BiConsumer;
|
50
|
+
|
51
|
+
public class Arrays2 {
|
52
|
+
|
53
|
+
private static <T> BiConsumer<Map<T,T>,T> memoConsumer() {
|
54
|
+
Stack<T> keyBuff = new Stack<>();
|
55
|
+
return (m,v) -> {
|
56
|
+
if (keyBuff.isEmpty()) {
|
57
|
+
keyBuff.push(v);
|
58
|
+
} else {
|
59
|
+
m.put(keyBuff.pop(),v);
|
60
|
+
}
|
61
|
+
};
|
62
|
+
}
|
63
|
+
|
64
|
+
public static <T> Map<T,T> asMap(T... array) {
|
65
|
+
Map<T,T> result = Arrays.asList(array).stream().collect(
|
66
|
+
TreeMap::new,
|
67
|
+
memoConsumer(),
|
68
|
+
Map::putAll
|
69
|
+
);
|
70
|
+
return result;
|
71
|
+
}
|
72
|
+
|
73
|
+
}
|
74
|
+
```
|
1
new SimpleEntry<>(s,null)
answer
CHANGED
@@ -24,7 +24,7 @@
|
|
24
24
|
ArrayList::new,
|
25
25
|
(l,s) -> {
|
26
26
|
if (ordinal.next()) { // 奇数番目
|
27
|
-
l.add(new SimpleEntry(s,null));
|
27
|
+
l.add(new SimpleEntry<>(s,null));
|
28
28
|
} else { // 偶数番目
|
29
29
|
l.get(l.size()-1).setValue(s);
|
30
30
|
}
|
@@ -35,4 +35,5 @@
|
|
35
35
|
}
|
36
36
|
}
|
37
37
|
```
|
38
|
-
自分の実力だとこの程度です。良い方法があればどうぞご提案ください。
|
38
|
+
自分の実力だとこの程度です。良い方法があればどうぞご提案ください。
|
39
|
+
new SimpleEntry<>(s,null)に訂正しました。
|