本篇文章给大家带来了关于java的相关知识,其中主要整理了Stream流的概念和使用的相关问题,包括了Stream流的概念、Stream流的获取、Stream流的常用方法等等内容,下面一起来看一下,希望对大家有帮助。

一文掌握Java8新特性Stream流的概念和使用-LMLPHP

推荐学习:《java视频教程

当我们说到流的时候大家就会很容易联想到IO流,以为Stream流也是IO流,其实不然。Stream流是Java8中引入的一个全新的概念,用于解决已有集合类库既有的一些弊端。既然要学习Stream流,我们就要暂时忘记IO流的传统概念。我们今天就从Stream流的概念、特点、作用、使用方法等方法详解一下Stream流,那我就一起往下看吧!

Stream流的概念

为什么要使用Stream流?

一文掌握Java8新特性Stream流的概念和使用-LMLPHP

Stream流的思想类似于一个生产车间的流水线。当需要对多个元素进行操作(特别是多步操作)的时候,考虑到性能及便利性,我们应该首先拼好一个“模型”步驱方案,然后再按照方案去执行它。

一文掌握Java8新特性Stream流的概念和使用-LMLPHP

Stream的两个基础的特征:

当使用一个流的时候,通常包括三个基本步骤:获取一个数据源(source)→数据转换一执行操作获取想要的结果,每次转换原有Stream对象不改变,返回一个新的Stream对象(可以有多次转换),这就允许对其操作可以像链条一样排列,变成一个管道。

Stream流的获取

通过Collection集合获取

2.Stream接口的静态方法of获取

stream流的常用方法

stream的常用方法分为两类:

一文掌握Java8新特性Stream流的概念和使用-LMLPHP

以上是一些stream流的常用方法,下面我们就依次学习一下这些方法的使用。

forEach遍历方法

filter过滤方法

map映射方法(转换)

count统计元素个数方法

limit截取流元素方法

skip跳过元素方法

concat:合并方法

Stream流的练习

首先创建Person对象类

public class Person {

private String name;

public Person() {

super();

}

public Person(String name) {

super();

this.name = name;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

@Override

public String toString() {

return "Person [name=" + name + "]";

}

}
登录后复制

然后再根据习题要求用Stream流进行过滤

// 第一支队伍

// 创建集合

ArrayList<String> one = new ArrayList<>();

// 添加元素

one.add("迪丽热巴");

one.add("宋远桥");

one.add("苏星河");

one.add("石破天");

one.add("石中玉");

one.add("老子");

one.add("庄子");

one.add("洪七公");

//1.第一个队伍只要名字为3个字的成员姓名:存储到一个新集合中。

//2.第一个队伍筛选之后只要前3个人;存储到一个新集合中。

Stream<String>oneStream=one.stream().filter(name->name.length()==3).limit(3);
登录后复制
// 第二支队伍

// 创建集合

ArrayList<String> tow = new ArrayList<>();

// 添加元素

tow.add("古娜力扎");

tow.add("张无忌");

tow.add("赵丽颖");

tow.add("张三丰");

tow.add("尼古拉斯赵四");

tow.add("张天爱");

tow.add("张二狗");

//3.第二个队伍只要姓张的成员姓名;存储到一个新集合中。

//4.第二个队伍筛选之后不要前2个人;存储到一个新集合中。

Stream<String>towStream=tow.stream().filter(name->name.startsWith("张")).skip(2);
登录后复制
//5.将两个队伍合并为一个队伍;存储到一个新集台中。

//6.根据姓名创建Person对象:存储到一个新集合中,

//7.打印整个队伍的Person对象信息。

Stream.concat(oneStream,towStream).map(name->new Person(name)).forEach(p->System.out.println(p));
登录后复制

最后运行结果

一文掌握Java8新特性Stream流的概念和使用-LMLPHP

总结

最后,今天的内容就学到这里啦。主要熟悉和明白Stream流的一个思想概念、会使用Stream流的获取、和熟练掌握Stream流的一些常用方法。

一文掌握Java8新特性Stream流的概念和使用-LMLPHP

推荐学习:《java视频教程

以上就是一文掌握Java8新特性Stream流的概念和使用的详细内容,更多请关注Work网其它相关文章!

08-21 18:08