JAVA单排日记-2020/2/2-Stream流_常用方法

常用方法可被分成两种:
  1. 延迟方法: 返回值类型仍然是 Stream 接口自身类型的方法,因此支持链式调用。
  2. 终结方法:返回值类型不再是 Stream 接口自身类型的方法,因此不再支持类似 StringBuilder 那样的链式调用。本小节中,终结方法包括 countforEach 方法。

1.逐一处理:forEach

  • 终结方法
  • 该方法接收一个Consumer 接口函数 ,会将每一个流元素交给该函数进行处理。
  • 作用:遍历流中的数据
import java.util.List;

public class DemoforEach {
    public static void main(String[] args) {
        List<Integer> list = List.of(1,3,6,45,4);

        list.stream().forEach(i-> System.out.println(i));//重写Consumer中的accept()方法,将每个获取的数据都打印输出
    }
}

在这里插入图片描述

2.过滤:filter

  • 延迟方法
  • 该方法接收一个Perdicate 接口函数 ,作为筛选条件。
  • 作用:过滤数据
    在这里插入图片描述
import java.util.List;
import java.util.stream.Stream;

public class Demofilter {
    public static void main(String[] args) {
        List<Integer> list = List.of(12, 3, 4, 23, 5, 6, 7, 15, 9);

        Stream<Integer> stream = list.stream();

        Stream<Integer> stream1 = stream.filter(i -> i >= 6);

        stream1.forEach(i -> System.out.println(i));
    }
}

在这里插入图片描述

  • 注意:
    Stream流属于“管道流”,只能被“消费”(使用)一次。
    例如,Stream<Integer> stream1 = stream.filter(i -> i >= 6);stream这时候已经被使用过一次了,接下来就不能再用了。

3.映射:map

  • 延迟方法
  • 该接口需要一个Function 函数式接口参数,可以将当前流中的T类型数据转换为另一种R类型的流。
  • 作用:将当前流中的T类型数据转换为另一种R类型
    在这里插入图片描述
import java.util.stream.Stream;

public class Demo01map {
    public static void main(String[] args) {
        Stream<String> stream01 = Stream.of("1","2","4","6","5");
        Stream<Integer> stream02 = stream01.map(str->Integer.parseInt(str)+10);
        stream02.forEach(i-> System.out.println(i));
    }
}

在这里插入图片描述

4.统计个数:count

  • 终结方法
  • 作用:方法返回一个long值代表元素个数(不再像旧集合那样是int值)
import java.util.stream.Stream;

public class DemoCount {
    public static void main(String[] args) {
        Stream<Integer> stream = Stream.of(1,2,3,4,5,11,2,31,22,45,78);
        long size = stream.count();
        System.out.println(size);
    }
}

在这里插入图片描述

5.取用前n个:limit(n)

  • 延迟方法
  • 作用:方法可以对流进行截取,只取用前n个。
    在这里插入图片描述
import java.util.ArrayList;
import java.util.stream.Stream;

public class DemoLimit {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();

        list.add("1号");
        list.add("2号");
        list.add("3号");
        list.add("4号");
        list.add("5号");
        list.add("6号");

        Stream<String> stream = list.stream().limit(4);
        stream.forEach(i-> System.out.println(i));
    }
}

在这里插入图片描述

6.跳过前n个:skip(n)

  • 延迟方法
  • 作用:方法可以对流进行截取,跳过前n个。
    在这里插入图片描述
import java.util.ArrayList;
import java.util.stream.Stream;

public class Demoskip {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();

        list.add("1号");
        list.add("2号");
        list.add("3号");
        list.add("4号");
        list.add("5号");
        list.add("6号");

        Stream<String> stream = list.stream().skip(4);
        stream.forEach(i-> System.out.println(i));
    }
}

在这里插入图片描述

6.组合:concat

  • 延迟方法
  • 作用:将两个Stream进行组合
  • 静态方法
import java.util.stream.Stream;

public class Democoncat {
    public static void main(String[] args) {
        Stream<String> stream01 = Stream.of("1","2","3");
        Stream<String> stream02 = Stream.of("7","8","9");

        Stream<String> stream = Stream.concat(stream01,stream02);
        stream.forEach(i-> System.out.println(i));
    }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值