How to get(collect) List of Properties (String, Double, Integer) from List of beans in Java 8?
UPDATED: 25 September 2015
Tags:
Collection
,
List
,
Stream
,
stream-api
This little excerpt shows How you can fetch List<String>, List<Double>, List<Integer>, List<Object>, etc... from List<Beans>. And it also explains the use of map method in stream.
<R> Stream<R> map(Function<? super T, ? extends R> mapper);
In Simple term: map will return the stream of elements based on method you are calling.
Source code (Company.java)
Source code
The above image gives you abstract idea of following code.
Explanation: .map(Company::getCompanyName)
In this operation we are calling method getCompanyName() on each object of Company in List. That returns the Stream of value(CompanyName[String]) of all object in List and in the last we are collecting that data/values in List<String>
Output
<R> Stream<R> map(Function<? super T, ? extends R> mapper);
Returns a stream consisting of the results of applying the given function to the elements of this stream.
In Simple term: map will return the stream of elements based on method you are calling.
- public String getFirstname() : returns stream of String
- public Double getWeight() : returns stream of Double
- public JSONObject getMetaData : returns stream of JSONObject
- public Employee getEmployee: returns stream of Employee
Source code (Company.java)
public class Company {
private Long id;
private String CompanyName;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getCompanyName() {
return CompanyName;
}
public void setCompanyName(String CompanyName) {
this.CompanyName = CompanyName;
}
}
Source code
The above image gives you abstract idea of following code.
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class ListPropertiesFromBeans {
public static void main(String[] args) {
/* Create an object of `Company` and set values */
Company companyGoogle = new Company();
companyGoogle.setId(1L);
companyGoogle.setCompanyName("Google");
Company companyMicrosoft = new Company();
companyMicrosoft.setId(2L);
companyMicrosoft.setCompanyName("Microsoft");
/**
* - Create `List` of `Company`
* - Add `companyGoogle` and `companyMicrosoft` to List.
*/
List<Company> listCompanies = new ArrayList<>();
listCompanies.add(companyGoogle);
listCompanies.add(companyMicrosoft);
/**
* JavaDoc: `map` method
* Returns a stream consisting of the results of applying the given function to the elements of this stream.
*
* Explanation: `.map(Company::getCompanyName)`
* In this operation we are calling method `getCompanyName()` on each object of `Company` in List.
* That returns the `Stream` of value(CompanyName) of all object in List.
* In last we are collecting that data/values in List<String>
*/
List<String> listCompanyNames = listCompanies.stream()
.map(Company::getCompanyName)
.collect(Collectors.toList());
/* Print the company name collected using `map` method */
listCompanyNames.stream()
.forEach(strCompanyName -> System.out.println(strCompanyName));
}
}
Explanation: .map(Company::getCompanyName)
In this operation we are calling method getCompanyName() on each object of Company in List. That returns the Stream of value(CompanyName[String]) of all object in List and in the last we are collecting that data/values in List<String>
Output
Google Microsoft
Tags:
Collection
,
List
,
Stream
,
stream-api


0 comments :