Значения карты, добавляемые в ArrayList - PullRequest
1 голос
/ 07 апреля 2020

У меня возникли проблемы с пониманием допустимости последней строки кода.

class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
    if (strs.length == 0) return new ArrayList();
    Map<String, List> ans = new HashMap<String, List>();
    for (String s : strs) {
        char[] ca = s.toCharArray();
        Arrays.sort(ca);
        String key = String.valueOf(ca);
        if (!ans.containsKey(key)) ans.put(key, new ArrayList());
        ans.get(key).add(s);
    }
    return new ArrayList(ans.values());
}

}

Строка кода: "return new ArrayList (ans.values ​​()) ;» Вставляются ли значения одно за другим, что именно происходит?

Ответы [ 3 ]

3 голосов
/ 07 апреля 2020

return new ArrayList(ans.values())
Разбейте его и посмотрите каждую инструкцию
1. new ArrayList - новый объект, заполненный некоторыми значениями
2 ans.values() - значения, поступающие из collection: Map<K,V>, а метод возвращает all V.
Примечание V - это List, а all V должно быть объединением всех Lists (допустим ссылки)

0 голосов
/ 07 апреля 2020

Согласно java do c класс ArrayList имеет конструктор, который может создавать список элементов из указанной коллекции. HasMap также является реализацией коллекции интерфейсов.

0 голосов
/ 07 апреля 2020

ans.values ​​() возвращает Collection<List<String>>, и вам нужно вернуть List<List<String>>. Класс ArrayList имеет конструктор с коллекцией в качестве параметра, см. документы .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...