java 8 新特性之stream的创建方法

  stream是java 8 的新特性之一,使用stream可以很方便的将集合或者数组进行筛选、去重、查找、过滤、限制、映射等操作。用好stream可以是你的代码更加简洁,干净、高效,本文主要介绍stream的创建方式,java 8提供了非常丰富的创建stream的方式,主要分成三大类:Stream类提供的静态工厂方法、Arrays和Collection类的默认方法stream()、其他方法,本文主要介绍前两类常用的创建方法。

1、使用stream的of方法创建stream,该方法创建的stream

@Test
public void testOf(){
	//使用stream的of方法创建stream
	Stream<String> stringStream = Stream.of("hello", "hi", "hei");
	stringStream.forEach(System.out::println);
}

结果:

 

2、使用stream的generate方法创建stream,长度是无限长的,如果没有limit()方法,程序会一直打印下去

@Test
public void testGenerate(){
	//使用stream的generate方法创建stream,长度是无限长的
	Stream<Integer> stringStream = Stream.generate(() -> (int) (Math.random() * 1000));
	stringStream.limit(100).forEach(System.out::println);
}

结果:

 

3、使用stream的iterate方法创建stream,长度是无限长的,iterate有两个参数,第一个参数是初始元素的之,第二个元素是一个UnaryOperator对象,定义每次元素的变化规则

@Test
public void testIterate(){
	//使用stream的iterate方法创建stream,长度是无限长的
	Stream<Integer> stringStream = Stream.iterate(2, i -> i + 1);
	stringStream.limit(10).forEach(System.out::println);
}

结果:

 

4、使用collection的stream方法创建stream

@Test
public void testCollection(){
	//使用collection的stream方法创建stream
	List<String> names = new ArrayList<>();
	names.add("李世民");
	names.add("唐僧");
	names.add("悟空");
	names.add("八戒");
	names.add("沙僧");
	names.add("白龙马");
	//过滤掉长度大于或等于3的名字
	names.stream().filter(s -> s.length() < 3).forEach(System.out::println);
}

结果:

 

5、使用Array的stream方法创建stream

@Test
public void testArray(){
	//使用Array的stream方法创建stream
	String[] fruits = {
			"火龙果", "山竹", "葡萄", "香蕉",
			"蛇果", "奇异果", "海棠果", "青枣",
			"开心果", "牛油果", "白果", "布朗果",
			"可可果", "芝果"
	};
	//查询带有“果”字的水果并打印出来
	Arrays.stream(fruits).filter(s -> s.contains("果")).forEach(System.out::println);
}

结果:

 

除了以上方法之外,还可以使用Random.ints()、BitSet.stream()、JarFile.stream()、Pattern.splitAsStream(java.lang.CharSequence)、Files.lines(java.nio.file.Path)等方法创建,这里就不展开介绍了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值