Skip to content

Instantly share code, notes, and snippets.

@delta-bravo
Last active November 13, 2016 20:06
Show Gist options
  • Save delta-bravo/208d3b48bfbaacaa0e6605ad61c9e120 to your computer and use it in GitHub Desktop.
Save delta-bravo/208d3b48bfbaacaa0e6605ad61c9e120 to your computer and use it in GitHub Desktop.
Simple example showing usage of Streams API
package com.cavok.stream;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* Created by dennis on 13/11/2016.
*/
public class StreamMain
{
public static void main(String[] args)
{
BasicStreamOperations basicStreamOperations = new BasicStreamOperations();
List<SomeSimpleObject> inputList = Arrays.asList(new SomeSimpleObject("One", 1, Arrays.asList("Second", "Third")),
new SomeSimpleObject("Two", 2, Arrays.asList("First", "Third")),
new SomeSimpleObject("Three", 3, Arrays.asList("First","Second")));
basicStreamOperations.extractElementProperty(inputList).forEach(s -> System.out.println(s));
basicStreamOperations.extractSubList(inputList).forEach(s -> System.out.println(s));
basicStreamOperations.extractMapOfProperties(inputList).
forEach((k, v) -> System.out.println(String.format("Map Entry\n %s: %s", k, v.stream().
reduce((s1, s2) -> s1 + ", " + s2).map(r -> r).
orElse("Value absent"))));
basicStreamOperations.extractMapOfSelf(inputList).
forEach((k, v) -> System.out.println(String.format("Map Entry\n %s: %s, %d, list: [%s]", k, v.getName
(), v.getValue(), v.getOthers().stream().reduce((s1, s2) -> s1 + ", " + s2).map(r -> r)
.orElse("Value absent"))));
}
}
class BasicStreamOperations
{
public List<String> extractElementProperty(List<SomeSimpleObject> inputList)
{
return inputList.stream().map(c -> c.getName()).collect(Collectors.toList());
}
public List<String> extractSubList(List<SomeSimpleObject> inputList)
{
return inputList.stream().flatMap(c -> c.getOthers().stream()).collect(Collectors.toList());
}
public Map<String, List<String>> extractMapOfProperties(List<SomeSimpleObject> inputList)
{
return inputList.stream().collect(Collectors.toMap(SomeSimpleObject::getName, SomeSimpleObject::getOthers));
}
public Map<String, SomeSimpleObject> extractMapOfSelf(List<SomeSimpleObject> inputList)
{
return inputList.stream().collect(Collectors.toMap(SomeSimpleObject::getName, c -> c));
}
}
@AllArgsConstructor
class SomeSimpleObject
{
@Getter
private String name;
@Getter
private int value;
@Getter
private List<String> others;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment