回答編集履歴

2

第2案を追記

2020/01/06 07:45

投稿

xebme
xebme

スコア1090

test CHANGED
@@ -75,3 +75,73 @@
75
75
  自分の実力だとこの程度です。良い方法があればどうぞご提案ください。
76
76
 
77
77
  new SimpleEntry<>(s,null)に訂正しました。
78
+
79
+
80
+
81
+ **Array2#asMap第2案(追記)**
82
+
83
+
84
+
85
+ 関数型プログラミングの常套句を使います。引数の配列の要素数が奇数の場合、最後の要素を切り捨てます。
86
+
87
+ ```Java
88
+
89
+ import java.util.Arrays;
90
+
91
+ import java.util.Map;
92
+
93
+ import java.util.Stack;
94
+
95
+ import java.util.TreeMap;
96
+
97
+ import java.util.function.BiConsumer;
98
+
99
+
100
+
101
+ public class Arrays2 {
102
+
103
+
104
+
105
+ private static <T> BiConsumer<Map<T,T>,T> memoConsumer() {
106
+
107
+ Stack<T> keyBuff = new Stack<>();
108
+
109
+ return (m,v) -> {
110
+
111
+ if (keyBuff.isEmpty()) {
112
+
113
+ keyBuff.push(v);
114
+
115
+ } else {
116
+
117
+ m.put(keyBuff.pop(),v);
118
+
119
+ }
120
+
121
+ };
122
+
123
+ }
124
+
125
+
126
+
127
+ public static <T> Map<T,T> asMap(T... array) {
128
+
129
+ Map<T,T> result = Arrays.asList(array).stream().collect(
130
+
131
+ TreeMap::new,
132
+
133
+ memoConsumer(),
134
+
135
+ Map::putAll
136
+
137
+ );
138
+
139
+ return result;
140
+
141
+ }
142
+
143
+
144
+
145
+ }
146
+
147
+ ```

1

new SimpleEntry<>(s,null)

2020/01/06 07:45

投稿

xebme
xebme

スコア1090

test CHANGED
@@ -50,7 +50,7 @@
50
50
 
51
51
  if (ordinal.next()) { // 奇数番目
52
52
 
53
- l.add(new SimpleEntry(s,null));
53
+ l.add(new SimpleEntry<>(s,null));
54
54
 
55
55
  } else { // 偶数番目
56
56
 
@@ -73,3 +73,5 @@
73
73
  ```
74
74
 
75
75
  自分の実力だとこの程度です。良い方法があればどうぞご提案ください。
76
+
77
+ new SimpleEntry<>(s,null)に訂正しました。