Stream流中的常用方法

Stream接口的静态方法of可以获取数组对应的流。
static <T> Stream<T> of (T... values )
参数是一个可变参数。那么我们就可以传递一个数组

两种方法

  • 延迟方法:返回值类型仍然是Stream接口自身类型的方法,因此支持链式调用。 (除了终结方法外,其余方
    法均为延迟方法。)
  • 终结方法:返回值类型不再是Stream接口自身类型的方法,因此不再支持类似stringBuilder那样的链式调
    用。本小节中,终结方法包括countforEach方法。

1.逐一处理:forEach

在这里插入图片描述


Stream<String> stream = Stream.of("张无忌", "张三丰", "周芷若");
		// 示例:使用forEach遍历

		// stream.forEach((String name)->{
		// System.out.println(name);
		// });

		stream.forEach(name -> System.out.println(name)); // 张无忌 张三丰 周芷若

2.过滤处理:filter

在这里插入图片描述

// 示例:使用filter进行过滤
		Stream<String> stream = Stream.of("王刚", "王二", "孙二", "王子");
		Stream<String> stream2 = stream.filter((String name) -> {
			return !name.endsWith("二");
		});
		stream2.forEach(name -> System.out.println(name));// 王刚 王子

3.统计个数:count

// count方法返回long类型且是终结方法
		ArrayList<Integer> list = new ArrayList<>();
		list.add(1);
		list.add(2);
		list.add(3);
		list.add(4);
		list.add(5);
		Stream<Integer> str = list.stream();
		System.out.println(str.count()); //5

4.取用前几个:limit

// 取用前几个就写几,是延迟方法
		Stream<String> str1 = Stream.of("A", "B", "C", "D");
		Stream<String> str2 = str1.limit(2);
		str2.forEach(a -> System.out.println(a)); //A B

5.跳过前几个:skip

// 跳过前几个就写几,是延迟方法
		Stream<String> str1 = Stream.of("A", "B", "C", "D");
		Stream<String> str2 = str1.skip(2);
		str2.forEach(a -> System.out.println(a)); //C D

6.合并:concat

Stream<String> str1 = Stream.of("A", "B");
		Stream<String> str2 = Stream.of("C", "D");
		Stream<String> str3 = Stream.concat(str1, str2);
		str3.forEach(a -> System.out.println(a)); //A B C D

7.综合案例

ArrayList<String> part1 = new ArrayList<>();
		part1.add("AAA");
		part1.add("B");
		part1.add("CCC");
		part1.add("DD");
		part1.add("EEEEE");
		part1.add("FFF");
		part1.add("GGG");

		ArrayList<String> part2 = new ArrayList<>();
		part2.add("HHH");
		part2.add("I");
		part2.add("JJJ");
		part2.add("KK");
		part2.add("LLLLL");
		part2.add("MMM");
		part2.add("NNN");

		Stream<String> one = part1.stream().filter(name -> name.length() == 3).limit(3); // 留下ACF
		Stream<String> two = part2.stream().filter(name -> name.length() == 3).skip(2); // 留下MN
		Stream<String> all = Stream.concat(one, two);
		all.forEach(name -> System.out.println(name));
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值