使用Java8流将数组转换为HashMap
我正在编写一个函数,使用Java8流将数组转换为映射使用Java8流将数组转换为HashMap,java,json,string,hashmap,Java,Json,String,Hashmap,我正在编写一个函数,使用Java8流将数组转换为映射 public static <K, V> Map<K, V> toMap(Object... entries) { // Requirements: // entries must be K1, V1, K2, V2, .... ( even length ) if (entries.length % 2 == 1) { throw new IllegalArgument
public static <K, V> Map<K, V> toMap(Object... entries) {
// Requirements:
// entries must be K1, V1, K2, V2, .... ( even length )
if (entries.length % 2 == 1) {
throw new IllegalArgumentException("Invalid entries");
}
// TODO
Arrays.stream(entries).????
}
公共静态映射toMap(对象…条目){
//要求:
//条目必须是K1、V1、K2、V2等(偶数长度)
if(entries.length%2==1){
抛出新的IllegalArgumentException(“无效条目”);
}
//待办事项
数组。流(条目)。????
}
有效用法
Map<String, Integer> map1 = toMap("k1", 1, "k2", 2);
Map<String, String> map2 = toMap("k1", "v1", "k2", "v2", "k3", "v3");
Map<String, Integer> map1 = toMap("k1", 1, "k2", 2, "k3");
map1=toMap(“k1”,1,“k2”,2);
map2=toMap(“k1”、“v1”、“k2”、“v2”、“k3”、“v3”);
无效用法
Map<String, Integer> map1 = toMap("k1", 1, "k2", 2);
Map<String, String> map2 = toMap("k1", "v1", "k2", "v2", "k3", "v3");
Map<String, Integer> map1 = toMap("k1", 1, "k2", 2, "k3");
map1=toMap(“k1”,1,“k2”,2,“k3”);
有什么帮助吗
谢谢 您可以使用
public static <K, V> Map<K, V> toMap(
Class<K> keyType, Class<V> valueType, Object... entries) {
if(entries.length % 2 == 1)
throw new IllegalArgumentException("Invalid entries");
return IntStream.range(0, entries.length/2).map(i -> i*2)
.collect(HashMap::new,
(m,i)->m.put(keyType.cast(entries[i]), valueType.cast(entries[i+1])),
Map::putAll);
}
publicstaticmap-toMap(
类keyType、类valueType、对象…条目){
if(entries.length%2==1)
抛出新的IllegalArgumentException(“无效条目”);
返回IntStream.range(0,entries.length/2).map(i->i*2)
.collect(HashMap::new,
(m,i)->m.put(keyType.cast(条目[i]),valueType.cast(条目[i+1]),
地图:putAll);
}
您可以使用
public static <K, V> Map<K, V> toMap(
Class<K> keyType, Class<V> valueType, Object... entries) {
if(entries.length % 2 == 1)
throw new IllegalArgumentException("Invalid entries");
return IntStream.range(0, entries.length/2).map(i -> i*2)
.collect(HashMap::new,
(m,i)->m.put(keyType.cast(entries[i]), valueType.cast(entries[i+1])),
Map::putAll);
}
publicstaticmap-toMap(
类keyType、类valueType、对象…条目){
if(entries.length%2==1)
抛出新的IllegalArgumentException(“无效条目”);
返回IntStream.range(0,entries.length/2).map(i->i*2)
.collect(HashMap::new,
(m,i)->m.put(keyType.cast(条目[i]),valueType.cast(条目[i+1]),
地图:putAll);
}
您是否意识到它已经存在?它从Java9
开始就存在了
下面创建键和值的不可变映射
map2=Map.of(“k1”、“v1”、“k2”、“v2”、“k3”、“v3”);
对于可变映射,请执行以下操作:
map2=新的HashMap(Map.of(“k1”、“v1”、“k2”、“v2”、“k3”、“v3”);
您是否意识到它已经存在?它从Java9
开始就存在了
下面创建键和值的不可变映射
map2=Map.of(“k1”、“v1”、“k2”、“v2”、“k3”、“v3”);
对于可变映射,请执行以下操作:
map2=新的HashMap(Map.of(“k1”、“v1”、“k2”、“v2”、“k3”、“v3”);
您可以这样使用它
Map map = ArrayUtils.toMap(arrayName);
您可以从以下位置导入ArrayUtil:
import org.apache.commons.lang3.ArrayUtils;
只需包含Apache JAR即可您可以这样使用它
Map map = ArrayUtils.toMap(arrayName);
您可以从以下位置导入ArrayUtil:
import org.apache.commons.lang3.ArrayUtils;
只包括Apache JAR问题明确提到Java 8,因此Java 9不在本问题范围内问题明确提到Java 8,因此Java 9不在本问题范围内您的目的是什么<存在代码>地图的。您这样做的目的是什么<代码>映射存在。