forked from nibnait/algorithms
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathStreamAPITest.java
More file actions
47 lines (37 loc) · 1.52 KB
/
StreamAPITest.java
File metadata and controls
47 lines (37 loc) · 1.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package Java8_in_Action;
import com.google.common.collect.Lists;
import lombok.AllArgsConstructor;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
public class StreamAPITest {
public static void main(String[] args) {
List<Article> articles = new ArrayList<>();
articles.add(new Article("title1", "author1", Lists.newArrayList("tag1")));
articles.add(new Article("title2", "author2", Lists.newArrayList("tag1", "Java")));
articles.add(new Article("title3", "author3", Lists.newArrayList("tag1", "Java", "tag3")));
Optional<Article> firstJavaArticle = getFirstJavaArticle(articles);
System.out.println(firstJavaArticle.toString());
List<Article> allJavaArticles = getAllJavaArticles(articles);
System.out.println(allJavaArticles.toString());
}
private static Optional<Article> getFirstJavaArticle(List<Article> articles) {
return articles.stream()
.filter(article -> article.getTags().contains("Java"))
.findFirst();
}
private static List<Article> getAllJavaArticles(List<Article> articles) {
return articles.stream()
.filter(article -> article.getTags().contains("Java"))
.collect(Collectors.toList());
}
@Data
@AllArgsConstructor
private static class Article {
private final String title;
private final String author;
private final List<String> tags;
}
}