BAEL-591 : New Stream Collectors in Java 9 (#1046)

* String to char and vice versa initial article code

* Junit test case for String Conversion. Deleting normal class.

* Changes based on review.

* BAEL-591 : New Java9 Collectors code snippet

* Deleting String conversion test
This commit is contained in:
Nitish Bangera 2017-01-25 13:45:11 +05:30 committed by maibin
parent e02f7825a3
commit dd2772a387
1 changed files with 81 additions and 0 deletions

View File

@ -0,0 +1,81 @@
package com.baeldung.java9.language.stream;
import org.junit.Test;
import java.util.*;
import java.util.stream.Collectors;
import java.util.function.Function;
import static org.junit.Assert.assertEquals;
public class CollectorImprovementTest {
private static class Blog {
private String authorName;
private List<String> comments;
public Blog(String authorName) {
this.authorName = authorName;
this.comments = new LinkedList<String>();
}
public String getAuthorName() {
return this.authorName;
}
public List<String> getComments() {
return new LinkedList<String>(this.comments);
}
public void addComment(String comment) {
this.comments.add(comment);
}
}
@Test
public void testFiltering() {
List<Integer> numbers = List.of(1, 2, 3, 5, 5);
Map<Integer, Long> result = numbers.stream()
.filter(val -> val > 3).collect(Collectors.groupingBy(
Function.identity(), Collectors.counting()));
assertEquals(1, result.size());
result = numbers.stream().collect(Collectors.groupingBy(
Function.identity(), Collectors.filtering(val -> val > 3,
Collectors.counting())));
assertEquals(4, result.size());
}
@Test
public void testFlatMapping() {
Blog blog1 = new CollectorImprovementTest.Blog("1");
blog1.addComment("Nice");
blog1.addComment("Very Nice");
Blog blog2 = new CollectorImprovementTest.Blog("2");
blog2.addComment("Disappointing");
blog2.addComment("Ok");
blog2.addComment("Could be better");
List<Blog> blogs = List.of(blog1, blog2);
Map<String, List<List<String>>> authorComments1 =
blogs.stream().collect(Collectors.groupingBy(
Blog::getAuthorName, Collectors.mapping(
Blog::getComments, Collectors.toList())));
assertEquals(2, authorComments1.size());
assertEquals(2, authorComments1.get("1").get(0).size());
assertEquals(3, authorComments1.get("2").get(0).size());
Map<String, List<String>> authorComments2 =
blogs.stream().collect(Collectors.groupingBy(
Blog::getAuthorName, Collectors.flatMapping(
blog -> blog.getComments().stream(),
Collectors.toList())));
assertEquals(2, authorComments2.size());
assertEquals(2, authorComments2.get("1").size());
assertEquals(3, authorComments2.get("2").size());
}
}