Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。
可以用来筛选数据,遍历集合
public void testStream() {
List<Integer> list = new ArrayList<>();
Collections.addAll(list, 22,33,11,55);
list.stream().filter(num->num>33).forEach(System.out::println);
}
还可自定义筛选条件
public class TestStream {
public static int countBooks(List<Book> list, Predicate<Book> predicate) {
int count = 0;
for (Book book : list) {
if (predicate.test(book)) {
count++;
}
}
return count;
}
public static void showBooks(List<Book> list, Predicate<Book> predicate) {
list.forEach(book -> {
if (predicate.test(book)) {
System.out.println(book);
}
});
}
public static void main(String[] args) {
List<Book> list = new ArrayList<>();
Collections.addAll(list, new Book("java从入门到放弃", "xxx", 44.44), new Book("python从入门到精通", "yy", 55.55),
new Book("java virtual machine", "zz", 33.33));
System.out.println(countBooks(list, book -> book.getBookName().contains("java")));
System.out.println("-----------------------------------------------");
showBooks(list, book -> book.getBookName().length() > 5);
System.out.println("-----------------------------------------------");
showBooks(list, book -> book.getPrice() > 20 && book.getAutherName().length() == 2);
}
}