我有2个数组(大小相同)String[]
和Object[]
。
问题是:有没有更优雅的方式将它们转换为Map?
private Map<String, Object> arraysToMap(String[] keys, Object[] values) {
Map<String, Object> map = new HashMap<>();
if (keys.length != 0) {
for (int i = 0; i < keys.length; i++) {
map.put(keys[i], values[i]);
}
}
return map;
}
Java 8风格可能吗?
重要说明:
values
可能包含空值keys
包含非null的唯一元素答案 0 :(得分:1)
要解决此问题,您可以使用以下代码:
public class Test {
static String[] keys = {"String1", "String2"};
static Object[] values = {new Object(), new Object()};
public static void main(String[] args) {
Map<String, Object> map = IntStream.range(0, keys.length)
.boxed()
.collect(Collectors.toMap(i -> keys[i], i -> values[i]));
}
}
你可以看到我首先创建了一个从零到keys.length
的范围,然后我们用它们相应的对象包装类替换了流的原始值。最后,我们使用Collectors.toMap
方法来实际创建地图。还要确保尺寸相等。