Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import com.google.auto.value.AutoValue;
- import io.vavr.collection.List;
- import static io.vavr.API.*;
- import static io.vavr.Predicates.instanceOf;
- interface Recommendation {
- String id();
- }
- @AutoValue
- abstract class EventRecommendation implements Recommendation {
- public abstract String id();
- public abstract int numberOfEpisodeTitles();
- public static EventRecommendation create(String id, int numberOfEpisodeTitles) {
- return new AutoValue_EventRecommendation(id, numberOfEpisodeTitles);
- }
- }
- @AutoValue
- abstract class ContentRecommendation implements Recommendation {
- public abstract String id();
- public static ContentRecommendation create(String id) {
- return new AutoValue_ContentRecommendation(id);
- }
- }
- public final class Test {
- public static void main(String[] args) {
- List<Recommendation> recommendations = List.of(
- EventRecommendation.create("event-111", 2),
- EventRecommendation.create("event-222", 3),
- EventRecommendation.create("event-333", 1),
- ContentRecommendation.create("content-111"),
- ContentRecommendation.create("content-222"),
- ContentRecommendation.create("content-333"));
- int sum = recommendations.toStream()
- .map(recommendation -> Match(recommendation).of(
- Case($(instanceOf(EventRecommendation.class)), EventRecommendation::numberOfEpisodeTitles),
- Case($(), 0)))
- .sum()
- .intValue();
- System.out.println(sum); // should be 6
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement