相关疑难解决方法(0)

Java:如何将List转换为Map

最近,我与一位同事讨论了如何在Java中转换List为最佳方式,Map以及是否有任何特定的好处.

我想知道最佳转换方法,如果有人能指导我,我会非常感激.

这是一个好方法:

List<Object[]> results;
Map<Integer, String> resultsMap = new HashMap<Integer, String>();
for (Object[] o : results) {
    resultsMap.put((Integer) o[0], (String) o[1]);
}
Run Code Online (Sandbox Code Playgroud)

java list hashmap data-conversion data-structures

201
推荐指数
10
解决办法
37万
查看次数

使用Java 8 Lambda表达式将String数组转换为Map

是否有更好的功能方式将"key:value"形式的字符串数组转换为Map使用Java 8 lambda语法?

Arrays.asList("a:1.0", "b:2.0", "c:3.0")
        .stream()
        .map(elem -> elem.split(":")
        .collect(Collectors.toMap(keyMapper?, valueMapper?));
Run Code Online (Sandbox Code Playgroud)

我现在的解决方案似乎没有真正的功能:

Map<String, Double> kvs = new HashMap<>();
Arrays.asList("a:1.0", "b:2.0", "c:3.0")
        .stream()
        .map(elem -> elem.split(":"))
        .forEach(elem -> kvs.put(elem[0], Double.parseDouble(elem[1])));
Run Code Online (Sandbox Code Playgroud)

java lambda functional-programming java-8 java-stream

32
推荐指数
1
解决办法
4万
查看次数

如何使用Java 8 Stream将Array转换为HashMap

我正在编写一个函数,使用Java 8 Stream将数组转换为Map.

这就是我想要的

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).????
}
Run Code Online (Sandbox Code Playgroud)

有效的用法

Map<String, Integer> map1 = toMap("k1", 1, "k2", 2);

Map<String, String> map2 = toMap("k1", "v1", "k2", "v2", "k3", "v3");
Run Code Online (Sandbox Code Playgroud)

无效的用法

Map<String, Integer> map1 = toMap("k1", 1, "k2", 2, "k3");
Run Code Online (Sandbox Code Playgroud)

有帮助吗?

谢谢!

java arrays hashmap java-8 java-stream

9
推荐指数
1
解决办法
1万
查看次数