Say I have an object in C#:
public class Person { public string Name{get;set;} public int Age{get;set;} }
To select the names from this list in C# I would do the following:
List<string> names = person.Select(x=>x.Name).ToList();
How would I do the same thing in Java 8?
There is nothing like LINQ for Java.
In Java 8, the equivalents are the java. util. function. Function<T, R> and java.
If you have a list of Persons like List<Person> persons;
you can say
List<String> names =persons.stream().map(x->x.getName()).collect(Collectors.toList());
or, alternatively
List<String> names =persons.stream().map(Person::getName).collect(Collectors.toList());
But collecting into a List
or other Collection
is intented to be used with legacy APIs only where you need such a Collection
. Otherwise you would proceed using the stream’s operations as you can do everything you could do with a Collection
and a lot more without the need for an intermediate storage of the String
s, e.g.
persons.stream().map(Person::getName).forEach(System.out::println);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With