我有如下所示的Java列表表示形式
列表数据表示形式
[
{ "type" : "Error", "name" : "xyz" },
{ "type" : "Success", "name" : "abc" },
{ "type" : "none", "name" : "prq" },
{ "type" : "Success", "name" : "" },
{ "type" : "Success", "name" : "xyz" },
{ "type" : "Warning", "name" : "efc" }
.
.
.
]
(此处为部分表示)。 以及下面的对象表示形式
public Node {
List<String> errorNames;
List<String> SuccessNames;
List<String> WarningNames;
}
我想使用Java流根据类型区分三种类型的名称,并将每个名称添加到各自的列表中。
最好的方法(Stream.filter / Collect / Map其他任何方法)将列表分割成这样,以便最后“ Node's->(所有列表)”将具有对应的数据?
答案 0 :(得分:1)
假设您的Node
类实际上看起来像这样:
public class Node {
private String type;
private String name;
public Node(String type, String name) {
this.type = type;
this.name = name;
}
public String getType() {
return type;
}
public String getName() {
return name;
}
}
您可以结合使用Collectors#groupingBy
和Collectors#mapping
来创建Map<String, List<String>>
,其中键为type
,值是{{ List
中的每个name
中的1}}:
Node
输出:
type