У меня есть 2 List<xxx>
и необходимость пересечения им от xxx.getId()
, поэтому я использую Stream
и Lambda
. Эти шаги:
List<xxx> list1 = function1();
List<xxx> list2 = function2();
List<String> list1InString = list1.stream().map(input -> input.getId()).collect(toList());
list2 = list2.stream().filter(input -> list1InString.contains(input.getId())).collect(toList());
Я хочу сделать это с помощью double colon
, например:
list2 = list2.stream().filter(list1InString::contains).collect(toList());
Но это не так, потому что contains
ссылка наххй объект не Строка GetId () метод. Я знаю, что тратить время, чтобы преобразовать list1 в list1InString, но я не знаю лучшего способа. Любая помощь очень ценна, спасибо большое.
1016 * Edit: Спасибо за ответ много, я просто хочу, чтобы сделать код более простым с помощью двойного двоеточия (который является новым для меня), но в этом случае не может использовать. Отдельное спасибо Наману и Хольгеру за разъяснение моей проблемы.