Fizik26
Fizik26

Reputation: 839

How to convert a List<Object[]> to Stream<Object>

I have a native query which returns a List<Object[]>. I want to convert this List to a Stream<Object>. These Objects are different columns from different tables of my database.

What is the best solution to do that?

Create a DTO and convert a List<DTO> to Stream<DTO>? How can I do that?

Upvotes: 5

Views: 949

Answers (2)

J-Alex
J-Alex

Reputation: 7107

Use flatMap:

List<Object[]> objectsList = new ArrayList<>();
Stream<Object> objectStream = objectsList.stream()
        .flatMap(Arrays::stream);

Upvotes: 10

Eran
Eran

Reputation: 393841

Assuming your DTO class has a proper constructor, you can write something like this:

List<Object[]> input = ...
Stream<DTO> dtos = input.stream().map(arr -> new DTO(arr[0], arr[1], ... , arr[n]);

Upvotes: 11

Related Questions