Я работаю с Java 8 Streams
У меня есть класс, как показано ниже:
public class ShareDao {
private String senderId;
private String receiverId;
public String getSenderId() {
return senderId;
}
public String sharingMode(){
return this.receiverId != null && !this.receiverId.trim().isEmpty() ? "incoming" : "outgoing";
}
}
Теперь я пытаюсь сделать следующее:
- Отфильтроватьзаписи, в которых senderId является недопустимым (с использованием поиска Map <>)
- Сгруппируйте коллекцию по senderId, а затем сгруппируйте их по shareMode.
Ниже приведен мой код:
Map<String, Map<String, List<ShareDao>>> p = records.stream()
.filter(shared -> userMap.containsKey(shared.getSenderId()))
.collect(Collectors.groupingBy(ShareDao::getSenderId), Collectors.groupingBy(ShareDao::sharingMode, Function.identity()));
Выдает ошибку:
Ошибка: (105, 90) Java: не найден подходящий метод для groupingBy (Share [...] gMode, java.util.function.Function) метод java.util.stream.Collectors.groupingBy (java.util.function.Function) не применяется (не может вывести переменные типа (типов) T, K (фактические и формальные списки аргументов различаются по длине))Метод java.util.stream.Collectors.groupingBy (java.util.function.Function, java.util.stream.Collector) не применим (не существует экземпляров (экземпляров) переменной типа (типов) T, так что java.util.function.Function соответствует java.util.stream.Collector) методу java.util.stream.Collectors.groupingBy (java.util.function.Function, java.util.function.Supplier, java.util.stream.Collector) не применяется (не может выводить переменные типа (типов) T, K, D, A, M (фактические и формальные списки аргументов различаются по длине))
Пока Intellij Idea
выдает ошибку
Non-Static method cannot be referenced from static context