从零开始学Java-第十四章

本文介绍了Java中的Stream流,它结合Lambda表达式简化了集合和数组的操作。Stream流的使用包括获取流、中间方法(如过滤、转换)和终结方法(如统计、打印)。文章通过示例展示了从单列集合、双列集合、数组以及零散数据获取Stream流的方法,并列举了Stream流的主要中间和终结方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

十四、Stream流

Stream流的作用

结合Lambda表达式,简化集合、数组的操作。

Stream流的使用步骤

  • 先得到一条Stream流,并把数据放上去。
  • 利用Stream流中的API进行各种操作。
    • 中间方法:调用完毕之后,还可以调用其他方法。(过滤、转换)
    • 终结方法:最后一步,调用完毕之后,不能调用其他方法。(统计、打印)

获取Stream流方式

获取方式方法名说明
单列集合default Stream< E > stream()Collection类中的默认方法
双列集合无法直接使用Stream流
数组public static < T > Stream< T > stream(T[] array)Arrays工具类中的静态方法
一堆零散数据public static < T > Stream< T > stream(T…values)Stream接口中的静态方法
//1.单列集合获取Stream流
ArrayList<String> list = new ArrayList<>();
Collections.addAll(list, "a", "b", "c", "d", "e");
//获取一条流水线,并把集合中的数据放到流水线上
Stream<String> stream1 = list.stream();
//使用终结方法打印流水线上所有数据
stream1.forEach(new Consumer<String>() {
    @Override
    public void accept(String s) {
        //s表示流水线上的每一个数据
        System.out.println(s);
    }
});
//链式编程结合Lambda表达式
//list.stream().forEach(s -> System.out.println(s));
//1.创建双列集合
HashMap<String, Integer> hm = new HashMap<>();
//2.添加数据
hm.put("aaa",111);
hm.put("bbb",222);
hm.put("ccc",333);
hm.put("ddd",444);
//3.第一种方法获取Stream流
hm.keySet().stream().forEach(s -> System.out.println(s));
//4.第二种方法获取Stream流
hm.entrySet().stream().forEach(s -> System.out.println(s))
//1.创建数据
int[] arr = {1,2,3,4,5,6,7,8,9,10};
//2.获取stream流
Arrays.strem(arr).forEach(s -> System.out.println(s));
//零散数据
//方法形参是一个可变参数,可以传递一堆零散的数据,也可以传递数组
//但是数组必须是引用数据类型的,如果传递基本数据类型,是会把整个数组当作一个元素放入stream中。
stream.of(1,2,3,4,5).forEach(s -> System.out.println(s));

Stream流的中间方法

名称说明
Stream< T > filter(Predicate<? super T> predicate)过滤
Stream< T > limit(long maxSize)获取前几个元素
Stream< T > skip(long n)跳过前几个元素
Stream< T > distinct()元素去重,依赖(HashCode()和equals方法)
static< T >Stream< T > concat(Stream a, Stream b)合并a和b两个流为一个流
Stream< R > map(Function<T, R> mapper)转换流中的数据类型

注意点:

  • 中间方法,返回新的stream流,原来的stream流只能用一次,建议使用链式编程。
  • 修改stream流中的数据,不会影响原来集合或者数组中的数据。

Stream流的终结方法

名称说明
void forEach(Consumer action)遍历
long count()统计
toArray()收集流中的数据,放到数组中
collect(Collector collector)收集流中的数据,放到集合中
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值