Предполагая, что ваш класс 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
для каждого Node
этого type
:
var nodes = List.of(
new Node("Error", "xyz"), new Node("Success", "abc"),
new Node("none", "prq"), new Node("Success", ""),
new Node("Success", "xyz"), new Node("Warning", "efc")
);
var map = nodes.stream()
.collect(Collectors.groupingBy(Node::getType,
Collectors.mapping(Node::getName, Collectors.toList())));
System.out.println(map);
Выход:
{Warning=[efc], Error=[xyz], none=[prq], Success=[abc, , xyz]}