Преобразование списка списков в HashTable в Java - PullRequest
0 голосов
/ 20 марта 2019

У меня есть список списков, содержащих источник и пункт назначения. Например,

public static void main(String[] args) {
 List<Edge> edges = new ArrayList<>();}

[ "А", "В"]

[ "А", "С"]

[ "А", "D"]

[ "В", "Е"]

Я хотел бы преобразовать это в hashmap, как

HashMap<String,List<String>> map = new HashMap<String,List<String>>();

A: B, C, D

B: E

Как мне это сделать?

функция которая у меня есть

static class Edge {
     public String source;
     public String destination;

     public Edge(String source, String destination) {
       this.source = source;
       this.destination = destination;
     }
   }

Ответы [ 2 ]

2 голосов
/ 20 марта 2019

Вы можете просто сделать:

Map<String, List<String>> collMap = edges.stream()
            .collect(Collectors.groupingBy(Edge::getSource, 
                     Collectors.mapping(Edge::getDestination, Collectors.toList())));

, который дает вывод:

{A = [B, C, D], B = [E]}

1 голос
/ 20 марта 2019

Переберите каждый край и добавьте его на карту:

for (Edge edge : edges) {
    if (!map.containsKey(edge.source)) 
        map.put(edge.source, new ArrayList<String>());
    map.get(edge.source).add(edge.destination);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...