在JDK1.8出现Stream。
通常在数组或者集合的基础上创建stream,stream不会专门存储数据,对stream的操作也不会影响到创建它的数组和集合。
public interface Stream<T> extends BaseStream<T, Stream<T>>
Stream接口中常用方法如下:
通过集合创建Stream对象:list.stream();
对元素进行筛选: Stream<T> filter(Predicate<? super T> predicate);
收集器,将过滤后的数据进行收集:public <R, A> R collect(Collector<? super T, A, R> collector)
package StreamDemo;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
public class TestStream {
public static void main(String[] args) {
List<String> list=new ArrayList<>();
Collections.addAll(list,"ha","hahaba","hai","hello");
//注意:对stream进行操作方法的返回值不是流的是终结方法
//1.计算list中以ha开头的字符串次数
System.out.println(list.stream().filter(s->s.startsWith("ha")).count()); // 3 最后一次性计算次数
//2.将以ha开头的字符串进行收集
List<String> newList=list.stream().filter(s->s.startsWith("ha")).collect(Collectors.toList());
System.out.println(newList); //[ha, hahaba, hai]
//3.判断list是否全部以ha开头
System.out.println(list.stream()