Issue
I have a List<User>
and I want add a method that return a particular User found using Id. I want make that using lambda expression so I have tried this but it doesn't work.
...
List<User> user = users.stream().filter(x -> x.id == id).collect(Collectors.toList());
return user[0];
This code dosen't compile and give me these errors:
The method stream() is undefined for the type List<User>
Lambda expressions are allowed only at source level 1.8 or above *
Collectors cannot be resolved
- I'm using eclipse 4.4.3 Kepler and I have installed java 8 in the machine and the plugin for working with java8 in eclipse.
Solution
Advice: If you want just first element matchig a condition, don't collect all elements to list (it's a bit overkill), use findFirst()
method instead:
return users.stream().filter(x -> x.id == id).findFirst().get();
Note that findFirst()
will return an Optional object, and get()
will throw an exception if there is no such element.
Answered By - kajacx
Answer Checked By - Marilyn (JavaFixing Volunteer)