Как добавить дополнительные методы для автозаполнения в IntelliJ

#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()
       );