Java中Stream流的map方法示例详解
作者:和烨
本文给大家介绍Java中Stream流的map方法,包括该方法的定义、语法、示例、注意事项、应用场景以及与其他Stream方法的结合使用,感兴趣的朋友跟随小编一起看看吧
一、介绍
当学习Lambda表达式时,了解和掌握map()方法是非常重要的,因为它是函数式编程中常用的一种转换操作。在Java中,map()方法通常与流(Stream)一起使用,用于将流中的每个元素映射到另一个元素。
下面是关于map()方法的一篇学习指南:
二、学习Lambda表达式中的map()方法
1、什么是map()方法?
map()方法是流(Stream)类中的一个中间操作方法,它接受一个函数作为参数,并将该函数应用于流中的每个元素,然后返回一个新的流,其中包含由该函数的结果组成的元素。
2、语法
<R> Stream<R> map(Function<? super T, ? extends R> mapper)
Function<? super T, ? extends R>:接受一个泛型类型T的参数,并返回一个泛型类型R的结果的函数。
3、示例
假设我们有一个字符串列表,我们想将其中每个字符串转换为大写形式。我们可以使用map()方法来实现这个转换:
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
List<String> upperCaseNames = names.stream()
.map(name -> name.toUpperCase())
.collect(Collectors.toList());
System.out.println(upperCaseNames); // 输出: [ALICE, BOB, CHARLIE]4、 解析
- 我们首先将字符串列表转换为流,使用
stream()方法。 - 然后,我们调用
map()方法,并传递一个Lambda表达式,该表达式将每个元素转换为大写形式。 - 最后,我们使用
collect(Collectors.toList())方法将流中的元素收集到一个新的列表中。
1、注意事项
map()方法返回的是一个新的流,原始流不会受到影响。- 传递给
map()方法的Lambda表达式应该是无状态的,不应该修改外部的状态或变量。
2、应用场景
- 数据转换:将一种类型的数据转换为另一种类型。
- 数据提取:从对象中提取特定属性或信息。
- 数据处理:对数据进行逻辑处理或计算。
3、结论
map()方法是Lambda表达式中一个非常有用且强大的功能,它使得在集合数据上进行转换和处理变得更加简单和直观。通过学习和掌握map()方法,你将能够更好地利用Lambda表达式来提高Java编程的效率和可读性。
二、案例举例
public void test() throws ParseException {
List<People> peopleList = new ArrayList<People>();
People people1 = new People("张三", 18);
People people2 = new People("王五", 19);
peopleList.add(people1);
peopleList.add(people2);
Stream<String> peopleStream = peopleList.stream().map(
//使用匿名接口Function重写抽象方法apply,参数一为传入类型,参数二为传出类型
new Function<People, String>() {
@Override
public String apply(People people) {
people.setName("姓名:" + people.getName());
return people.getName();
}
}
);
peopleStream.forEach(s -> System.out.println(s));
System.out.println("========================================================");
Stream<People> peopleStream2 = peopleList.stream().map(
//lambda
s->addAge(s)
);
peopleStream2.forEach(s -> System.out.println(s));
}
public People addAge(People people){
people.setAge(people.getAge()+1);
return people;
}2、实体类
public class People {
private String name;
private int age;
public People(String name, int age) {
this.name = name;
this.age = age;
}
public People() {
}
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 +
'}';
}
}3、效果

三、其他
Stream中of方法传入可变参数
Stream中map元素类型转化方法
1、stream流获取某一个字段集合
List<String> names = personList.stream()
.map(person -> person.getName())
.collect(Collectors.toList());
- 坚持并不是一时的决心,而是每一天不断行动的力量。
- 不管过去有多少失败,未来依然是胜利的希望之地。
- 当你放下过去的包袱,才能迈向更美好的未来。
- 梦想不会自动成真,需要我们用行动和努力去实现。
- 如果你相信自己,无论多困难的道路都能走出光明的终点。
到此这篇关于Java中学习Stream流的map方法的文章就介绍到这了,更多相关Java Stream流map方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
