Допустим, у нас есть эта скучная часть кода, которую мы все должны были использовать:
ArrayList<Long> ids = new ArrayList<Long>();
for (MyObj obj : myList){
ids.add(obj.getId());
}
После перехода на Java 8 моя IDE сообщает мне, что я могу заменить этот код на collect call
, и он автоматически генерирует:
ArrayList<Long> ids = myList.stream().map(MyObj::getId).collect(Collectors.toList());
Однако это дает мне эту ошибку:
collect(java.util.stream.Collector<? super java.lang.Long,A,R>) in Steam cannot be
applied to: (java.util.stream.Collector<T>, capture<?>, java.util.List<T>>)
Я попробовал лить параметр, но он дал мне undefined A
и R
, а среда IDE больше не предлагает.
Мне любопытно, как вы можете использовать collect call
в этом сценарии, и я не мог найти никакой информации, которая могла бы вести меня правильно. Может ли кто-нибудь пролить свет?