Есть несколько решений в зависимости от того, что вы пытаетесь сделать. Если у вас есть один целевой профиль, для которого вы хотите получить категорию, вы можете использовать findFirst
или findAny
, чтобы получить нужный профиль, а затем получить категорию из полученного Optional
.
Optional<String> result = profile.stream()
.filter(pro -> pro.getLastName().equals("test"))
.map(Profile::getCategory)
.findFirst(); // returns an Optional
Обратите внимание, что findFirst
возвращает Необязательно . Он учитывает возможность того, что у вас на самом деле нет таких, которые соответствуют вашим критериям, таким образом, чтобы вы могли справиться с этим изящно.
В качестве альтернативы, если вы пытаетесь объединить категории всех профилей с фамилией «test», тогда вы можете использовать .collect(Collectors.joining())
для накопления строки.
List<Profile> profile; // contains multiple profiles with last name of "test", potentially
String result = profile.stream()
.filter( pro -> pro.getLastName().equals("test"))
.map(Profile::getCategory)
.collect(Collectors.joining(", ")); // results in a comma-separated list