What is the Java equivalent for Enumerable.Select with lambdas in C#?

C#JavaJava 8

C# Problem Overview


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?

C# Solutions


Solution 1 - C#

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 Strings, e.g.

persons.stream().map(Person::getName).forEach(System.out::println);

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSamuelKDavisView Question on Stackoverflow
Solution 1 - C#HolgerView Answer on Stackoverflow