#intellij-idea #java-stream
#intellij-идея #java-stream
Вопрос:
Когда я пишу код с использованием IntelliJ, я часто использую автозаполнение как способ ускорения моего кодирования, однако есть определенные методы, которые, похоже, не предлагаются. Один из примеров Collectors.toMap
— он предложит toSet
, toColletion
и toList
когда я набираю .collect
, но никогда toMap
, что означает, что мне нужно вводить больше.
В качестве 1-го вопроса, могу ли я исправить это поведение? В качестве более общего вопроса, могу ли я добавить свой собственный пользовательский код для автоматического завершения в таких обстоятельствах?
Комментарии:
1. Не могли бы вы предоставить пример кода, в котором вы используете завершение?
2.
list.stream().coll
Я надеюсь, что у меня будет возможность заполнитьlist.stream().collect(Collectors.toMap(
3. Похоже на ошибку. Пожалуйста, сообщите об этом YouTrack: youtrack.jetbrains.com/issues/IDEA
Ответ №1:
Один трюк, который помогает мне каждый раз при попытке собрать поток, — это наличие переменной-заполнителя с ожидаемым типом. Что-то вроде:
// just a placeholder variable with proper types, which I can remove later!
Map<String, String> tempMapVariable = someCollection.stream()
.collect(
// here it will suggest the .toMap(...)
Collectors.toMap(i -> i.getKey(), i -> getValue())
);
Set<String> tempSetVariable = someCollection.stream()
.map(SomeCollection::mapperFn)
.collect(
// here it will suggest the .toSet()
Collectors.toSet()
);