- Stream<T>filter(Predicate predicate):对流中的数据进行过滤 Predicate接口中的方法: boolean test(T t) :对给定的参数判断,返回一个布尔值
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("张无忌");
arrayList.add("张翠山");
arrayList.add("张三丰");
arrayList.add("张良");
arrayList.add("谢广坤");
//过滤出姓氏含有"张"的人名
arrayList.stream().filter(s->s.startsWith("张")).forEach(s->System.out.println(s));
- Stream<T> limit (long maxSize) :截取指定参数个数的数据。
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("张无忌");
arrayList.add("张翠山");
arrayList.add("张三丰");
arrayList.add("张良");
arrayList.add("谢广坤");
arrayList.stream().limit(2).forEach(s->System.out.println(s));
//张无忌 张翠山
- Stream<T> skip(long n) :跳过指定参数个数的数据。
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("张无忌");
arrayList.add("张翠山");
arrayList.add("张三丰");
arrayList.add("张良");
arrayList.add("谢广坤");
arrayList.stream().skip(2).forEach(s->System.out.println(s));
//张三丰 张良 谢广坤
- static<T> Stream<T> concat(Stream a,Stream b):合并a流和b流为一个流。
ArrayList<String> arrayList1 = new ArrayList<>();
arrayList1.add("张无忌1");
arrayList1.add("张翠山1");
arrayList1.add("张三丰1");
arrayList1.add("张良1");
arrayList1.add("谢广坤1");
ArrayList<String> arrayList2 = new ArrayList<>();
arrayList2.add("张无忌2");
arrayList2.add("张翠山2");
arrayList2.add("张三丰2");
arrayList2.add("张良2");
arrayList2.add("谢广坤2");
Stream.concat(arrayList1.stream(), arrayList2.stream()).forEach(s->System.out.println(s));
//张无忌1 张翠山1 张三丰1 张良1 谢广坤1 张无忌2 张翠山2 张三丰2 张良2 谢广坤2
- Stream<T> distinct() :取出流中重复元素。依赖hashCode和equals方法。
ArrayList<String> arrayList1 = new ArrayList<>();
arrayList1.add("张无忌1");
arrayList1.add("张翠山1");
arrayList1.add("张三丰1");
arrayList1.add("张良1");
arrayList1.add("谢广坤1");
arrayList1.add("谢广坤1");
arrayList1.add("谢广坤1");
arrayList1.stream().distinct().forEach(s->System.out.println(s));
//张无忌1 张翠山1 张三丰1 张良1 谢广坤1