方法名 方法作用 返回值类型 方法种类
count 统计个数 long 终结
forEach 逐一处理 void 终结
filter 过滤 Stream 函数拼接
limit 取用前几个 Stream 函数拼接
skip 跳过前几个 Stream 函数拼接
map 映射 Stream 函数拼接
concat 组合 Stream 函数拼接
sort 排序 Stream 函数拼接
distinct 去重 Stream 函数拼接
match 匹配 Stream 函数拼接
max 求最大值
min 求最小值
reduce ....
mapToInt ....
count
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("e");
long count = list.stream().count();
System.out.println(count);//5
forEach
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("e");
list.forEach(System.out::println);
filter
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("e");
long a = list.stream()
.filter(e -> e.equals("a"))
.count();
System.out.println(a);
limit
limit方法可以对流进行截取处理,只取前n个数据
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("e");
list.stream()
.limit(2)
.forEach(System.out::println);
skip
希望跳过前面几个元素,可以使用skip方法来获取
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("e");
list.stream()
.skip(4)
.forEach(System.out::println);
reduce
List<String> list = new ArrayList<>();
list.add("1");
list.add("22");
list.add("1");
list.add("22");
list.add("22");
Integer reduce = list.stream()
.map(Integer::parseInt)
.reduce(0, (x, y) -> {
System.out.println("x="+x+",y="+y);
return x + y;
});
System.out.println(reduce);
mapToInt
Integer占用的内存比int多,在Stream流操作中会自动装箱和拆箱操作
为了提高程序代码的效率,我们可以先将流中Integer数据转化为int数据,然后在操作
List<Integer> list = new ArrayList<>();
list.add(22);
list.add(34);
list.add(5);
list.add(67);
IntStream intStream = list.stream()
.mapToInt(Integer::intValue);
intStream.forEach(System.out::println);
concat
如果有两个流,希望合并成为一个流,那么可以使用Stream接口的静态方法concat
List<Integer> list = new ArrayList<>();
list.add(22);
list.add(34);
List<Integer> list1 = new ArrayList<>();
list1.add(5);
list1.add(67);
Stream.concat(list.stream(),list1.stream())
.forEach(System.out::println);