import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;
public class StreamTest {
public static void main(String[] args) {
List<String> list=new ArrayList<>();
list.add("活着");
list.add("黄金时代");
list.add("巨人的陨落");
list.add("世界的凛冬");
list.add("一个陌生女人的来信");
list.add("悲惨世界");
list.add("人间失格");
//所有的 Collection 集合都可以通过 stream()这个方法获取流,这是 Collection 接口中的默认方法
//Stream filter(Predicate p) 返回一个与给定判断条件匹配的元素组成的流。
//void forEach(Consumer action) 对此流的每个元素执行一个操作,这是一个终结方法。
//long count() 返回此流中元素的计数。这是一个终结方法。
//Stream limit(long maxSize) 获得流中前 maxSize 个元素,将元素添加到另一个流中返回
// list.stream().filter(s -> (s.contains("人"))).forEach(System.out::println);
//
// list.stream().filter(s -> s.length()>=5).limit(2).forEach(System.out::println);
//书名中含有"世界"的
Stream<String> s1=list.stream().filter(s -> s.contains("世界"));
//书名长度大于等于5,不要前两个
Stream<String> s2=list.stream().filter(s -> s.length()>=5).skip(2);
//合并流
Stream<String> s3=Stream.concat(s1,s2);
//根据名字创建Book对象
Stream<Book> s4=s3.map(Book::new);
s4.forEach(System.out::println);
}
}
Book类:
public class Book {
private String name;
public Book() {
}
public Book(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Book{" +
"name='" + name + '\'' +
'}';
}
}