gpt4 book ai didi

Java 8 拆分字符串并在 Map 中创建 Map

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:14:55 31 4
gpt4 key购买 nike

我有一个类似 101-1-5,101-2-4,102-1-5,102-2-5,102-3-5,103-1-4 的字符串.

我想将其添加到 Map<String, Map<String, String>> 中.

喜欢:{101={1=5, 2=4}, 102={1=5, 2=5, 3=5}, 103={1=4}}

如何使用 Java 8 流来做到这一点?

我尝试使用普通的 Java。而且效果很好。

public class Util {
public static void main(String[] args) {

String samp = "101-1-5,101-2-4,102-1-5,102-2-5,102-3-5,103-1-4";

Map<String, Map<String, String>> m1 = new HashMap<>();
Map<String, String> m2 = null;

String[] items = samp.split(",");

for(int i=0; i<items.length; i++) {
String[] subitem = items[i].split("-");
if(!m1.containsKey(subitem[0]) || m2==null) {
m2 = new HashMap<>();
}
m2.put(subitem[1], subitem[2]);
m1.put(subitem[0], m2);
}
System.out.println(m1);
}
}

最佳答案

您可以为此使用以下代码段:

Map<String, Map<String, String>> result = Arrays.stream(samp.split(","))
.map(i -> i.split("-"))
.collect(Collectors.groupingBy(a -> a[0], Collectors.toMap(a -> a[1], a -> a[2])));

首先,它创建一个项目流,这些项目被映射到一个包含子项目的数组流。最后,您通过在第一个子项上使用 group by 收集所有内容,并创建一个内部映射,其中第二个值作为键,最后一个作为值。

结果是:

{101={1=5, 2=4}, 102={1=5, 2=5, 3=5}, 103={1=4}}

关于Java 8 拆分字符串并在 Map 中创建 Map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55288838/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com