Java8新特性-Stream,java数据结构和算法pdf百度云

本文详细介绍了Java8中的Stream API,包括如何通过数组、Stream.of方法、无限流和空流创建Stream,以及Stream的中间操作如filter、map、flatMap,有状态操作如distinct、sorted、limit、skip,终结操作如forEach、reduce、collect等,并提供了丰富的代码示例进行演示。
摘要由CSDN通过智能技术生成

stream.forEach(System.out::println);

}

输出结果

a

b

c

d

[](

)通过数组创建流

@Test

public void testArrayStream() {

int[] arr = new int[]{1, 2, 3, 4};

IntStream intStream = Arrays.stream(arr);

intStream.forEach(System.out::println);

System.out.println("========");

Integer[] arr2 = new Integer[]{1, 2, 3, 4};

Stream stream = Arrays.stream(arr2);

stream.forEach(System.out::println);

}

输出结果

1

2

3

4

========

1

2

3

4

[](

)通过Stream.of方法创建流

@Test

public void testStreamOf() {

Stream stream = Stream.of(1, 2, 3);

stream.forEach(System.out::println);

}

输出结果

1

2

3

[](

)创建规律的无限流

@Test

public void testUnlimitStream() {

Stream stream = Stream.iterate(0, x -> x + 2).limit(3);

stream.forEach(System.out::println);

}

输出结果

0

2

4

[](

)创建无限流

@Test

public void testUnlimitStream2() {

Stream stream = Stream.generate(() -> “number” + new Random().nextInt()).limit(3);

stream.forEach(System.out::println);

}

输出结果

number1042047526

number-155761434

number-1605164634

[](

)创建空流

@Test

public void testEmptyStream() {

Stream stream = Stream.empty();

stream.forEach(System.out::println);

}

[](

)Stream操作分类


  • 中间操作又可以分为无状态(Stateless)与有状态(Stateful)操作,

  • 无状态是指元素的处理不受之前元素的影响,

  • 有状态是指该操作只有拿到所有元素之后才能继续下去。

  • 终结操作又可以分为短路(Short-circuiting)与非短路(Unshort-circuiting)操作,

  • 短路是指遇到某些符合条件的元素就可以得到最终结果,

  • 非短路是指必须处理完所有元素才能得到最终结果。

  • 我们通常还会将中间操作称为懒操作,也正是由这种懒操作结合终结操作数据源构成的处理管道(Pipeline)实现了 Stream 的高效

[](

)中间操作


[](

)无状态

  • filter:过滤流,过滤流中的元素

  • map:转换流,将一种类型的流转换为另外一种类型的流

  • flapMap:拆解流,将流中每一个元素拆解成一个流

[](

)filter

filter接收一个Predicate函数接口参数,boolean test(T t);即接收一个参数,返回boolean类型。

@Test

public void testFilter() {

Integer[] arr = new Integer[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

Arrays.stream(arr).filter(x -> x > 3 && x < 8).forEach(System.out::println);

}

输出结果

4

5

6

7

[](

)map

map接收一个Function<T, R>函数接口,R apply(T t);即接收一个参数,并且有返回值。

@Test

public void testMap() {

String[] a

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值