如何使用Java流API解析带有字符串的数组

如何使用Java流API解析带有字符串的数组,java,api,java-stream,Java,Api,Java Stream,如何使用Java stream API从具有两个不同分隔符的字符串数组中解析和创建hashmap 我有以下数组 String[] domaintCount = new String[]{ "900, google.com", "400, mobile.yahoo.co.uk", "100, mobile.amazon.com"

如何使用Java stream API从具有两个不同分隔符的字符串数组中解析和创建hashmap

我有以下数组

String[] domaintCount = new String[]{  "900, google.com",
                                          "400, mobile.yahoo.co.uk",
                                           "100, mobile.amazon.com",
                                           "100, samsung.com"
                                            } ; 
我想创建一个hashmap,每个单词作为键,数字作为值。。 比如说

google ,900,
com ,900,
mobile,400

等等。。我想使用流API函数来实现它。

我会将其拆分,然后收集到一个映射中。对于您的简单示例,我直接使用了来自Java的SimpleEntry。如果您的结果更复杂,我会创建一个pojo:

Map<String, Double> yourMap = Arrays.stream(domaintCount)
    .map(string -> {
      String[] splitted = string.split(",");
      return new AbstractMap.SimpleEntry<String, Double>(splitted[1].trim(), Double.valueOf(splitted[0].trim()));
    })
    .collect(Collectors.toMap(AbstractMap.SimpleEntry::getKey, AbstractMap.SimpleEntry::getValue));
Map yourMap=Arrays.stream(DomainCount)
.map(字符串->{
String[]splitted=String.split(“,”);
返回新的AbstractMap.SimpleEntry(拆分的[1].trim(),Double.valueOf(拆分的[0].trim());
})
.collect(Collectors.toMap(AbstractMap.SimpleEntry::getKey,AbstractMap.SimpleEntry::getValue));

我做了类似的事情。基本思想是将字符串拆分为
的映射,然后合并这些映射的值

publicstaticvoidmain(字符串[]args){
字符串[]域计数=新字符串[]
{
“900,google.com”,
“400,mobile.yahoo.co.uk”,
“100,mobile.amazon.com”,
“100,三星网”
};
函数stringParser=string->{
String[]splitByComma=String.split(“,”);
String num=splitByComma[0];
String[]domains=splitByComma[1].trim().split(“\\”);
Map StringHashMap=新建HashMap();
for(字符串dom:域){
stringhashmap.put(dom,num);
}
返回stringhashmap;
};
Map collect=Stream.of(DomainCount)
.map(stringParser)
.map(map::entrySet)
.flatMap(集合::流)
.collect(分组方式(Map.Entry::getValue))
.values().stream()
.flatMap(列表::流)
.collect(toMap(Map.Entry::getKey,Map.Entry::getValue,(v1,v2)->v1));
系统输出打印项次(收集);
}
这样您也可以使用“,”和“,”


com的值应该从google.com映射到->900还是从samsung.com映射到100?由于404错误,我无法编辑,但不是split(“,”),而是split(“,”)
Stream.of(domainCount)
.map(str->str.split(", "))
.collect(toMap(strArr->strArr[0].trim(), strArr->strArr[1].trim());