Stream流中map方法
使用Stream流时发现其中的map方法使用有一些不太容易理解的地方,分析一下具体的流程,以一个小案例详细探讨Stream中map的使用。
案例涉及:
1、Stream中of方法传入可变参数
2、Stream中map元素类型转化方法
3、Function匿名接口,people匿名对象的使用
4、String中split切割方法
5、Lambda表达式
匿名对象也可以使用Lambda替换,达到精简的效果,因为了便于理解只在forEach遍历下使用了Lambda表达式)。
以下是程序:
public class Demo {
public static void main(String[] args) {
Stream.of("小王:18","小杨:20").map(new Function<String, People>() {
@Override
public People apply(String s) {
String[] str = s.split(":");
People people = new People(str[0],Integer.valueOf(str[1]));
return people;
}
}).forEach(people-> System.out.println("people = " + people));
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
程序分析:
public class Demo {
public static void main(String[] args) {
Stream.of("小王:18","小杨:20")//使用Stream中的of方法传入两个字符串
.map(new Function<String, People>() {
/*调用Stream中的map方法,使用匿名接口Function,
需要重写Function中的抽象方法apply,apply方法需要传入两个数据,
前一个为转化前的String类型,后一个为转化后的对象类型*/
@Override
public People apply(String s) {//传入要转变的参数
String[] str = s.split(":");
//调用String中的split方法,以:切割,定义一个字符串接收切割后的字符串数据
People people = new People(str[0],Integer.valueOf(str[1]));//对象家接收匿名对象切割后的元素。数组索引0为字符串,数组索引1为数字
return people;//返回people类型对象
}
}).forEach(people-> System.out.println("people = " + people));
//使用Stream中的forEach遍历People中的对象,使用了Lambda方式,重写了方法遍历输出
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
使用的People类:
public class People {
private String name;
private int age;
public People(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "People{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
Stream流中的map方法可以将字符串转换为对象接收,使代码的灵活性更高,Lambda表达式的简洁效果让开发者的效率升高,虽然Lambda在可读性方面不太便捷,对于经常使用的人来说也是十分方便。
引用自:https://blog.csdn.net/weixin_45531950/article/details/99664197