Hashmap не может зациклиться - метод getKey () не найден - Использование Java 8 - PullRequest
0 голосов
/ 14 декабря 2018

Привет! Я использую Java 8 и пытаюсь создать отфильтрованную карту cMap, отфильтрованную таким образом, что в ней есть только те ключи, которые есть в списке outerTable ... Кто-нибудь может сказать мне, почему

public List<String> outerTables = ArrayList<String>() = {{ add("table1"); }}

private Map<String, List<String>> cMap = new HashMap<String, List<String>>();

... (Делать вещи, чтобы заполнить cMap элементами <String, List<String>>)

Map<String, List<String>> cTempMap = new HashMap<String, List<String>>(cMap);

cMap.clear();

cMap.put(cTempMap.entrySet().stream()
    .filter(x -> outerTables.contains(x.getKey()))
    .collect(Collectors.toMap(m -> m.getKey(), m -> m.getValue())));

выдает ошибку ...

Cannot resolve method 'getKey()'

Я пытаюсь следовать примерам здесь - https://www.mkyong.com/java/how-to-loop-a-map-in-java/ и мой синтаксис выглядит так же.Спасибо.

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Вот как вы это делаете (со ссылкой на метод):

List<String> outerTables = new ArrayList<>();
Map<String, List<String>> cMap = new HashMap<String, List<String>>();
Map<String, List<String>> cTempMap = new HashMap<String, List<String>>(cMap);
cMap.putAll(cTempMap.entrySet()
                    .stream()
                    .filter(x -> outerTables.contains(x.getKey()))
                    .collect(Collectors.toMap(
                                     Entry::getKey,
                                    Entry::getValue
                    )));
0 голосов
/ 14 декабря 2018

Проблема в том, что вы используете put, тогда как вы должны использовать putAll.

Да, ошибка не очень значительна, так как она говорит "Не удается разрешить метод 'getKey ()"".

 cMap.putAll(cMap.entrySet()
            .stream()
            .filter(x -> outerTables.contains(x.getKey()))
            .collect(Collectors.toMap(m -> m.getKey(), m -> m.getValue())));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...