流映射方法介绍
map()方法将对象映射到同一类型或不同类型的其他对象。它是处理对象流的中间操作
它们被懒洋洋地调用,接受作为函数的输入,输出对象流,其中包含对流中每个元素应用函数的结果。
语法
Stream map(Function mapper)
map方法接受Function作为输入。该函数是一个功能接口,有一个抽象的方法
,接受T类型的输入并返回R类型的输出。
地图过滤器的例子
这是一个包含数字的List of String的例子,其输入和输出都是偶数。
- 创建字符串列表
- 从列表中创建流
- 用lambda表达式调用map()方法来遍历元素流
- 对每个元素应用过滤器以检查事件编号
- 最后,通过终端操作收集,将流转换为List
List listStringNumbers = Arrays.asList("11", "12", "31", "41", "15", "16");
System.out.println(listStringNumbers);
List eventNumbers = listStringNumbers.stream()
.map(s -> Integer.valueOf(s))
.filter(number -> number % 2 == 0)
.collect(Collectors.toList());
System.out.println(eventNumbers);
输出是
[11, 12, 31, 41, 15, 16]
[12, 16]
如何使用流将Map转换为List?
这是一个将hashmap转换为自定义java对象的例子。
使用流的lambda表达式,迭代哈希图元素,构建对象。
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class MapExample {
public static void main(String[] args) {
Map map = new HashMap<>();
map.put("1", "Kiran");
map.put("12", "Ram");
map.put("13", "John");
map.put("5", "Frank");
List listOfObjects = map.entrySet().stream().sorted(Comparator.comparing(e -> e.getKey()))
.map(e -> new MyObject(e.getKey(), e.getValue())).collect(Collectors.toList());
listOfObjects.forEach(l -> System.out.println("Id: " + l.getId() + ", Name: " + l.getName()));
}
}
class MyObject {
private String id;
private String name;
public MyObject(String id, String name) {
this.id = id;
this.name = name;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
}
输出是
Id: 1, Name: Kiran
Id: 12, Name: Ram
Id: 13, Name: John
Id: 5, Name: Frank
如何将List of String转换为大写或小写?
从List创建一个流,在每个字符串上调用map,转换并输出到控制台。
List listString= Arrays.asList("one", "two", "three", "four", "five");
listString.stream().map(String::toUpperCase).forEach(System.out::println);
输出结果是
ONE
TWO
THREE
FOUR
FIVE
mapToInt - IntStream mapToInt ( ToIntFunction mapper )
它接收ToIntFunction作为参数并返回IntStream。ToIntFunction是一个功能接口,有一个抽象方法,接受整数值并生成一个结果。IntStream是Stream类的整数版本。流中的每个元素都被应用到函数中。
mapToLong - LongStream mapToLong ( ToLongFunction mapper )
它接受ToLongFunction作为一个参数并返回LongStream。ToLongFunction是一个功能接口,它有一个抽象的方法,接收输入的长值并输出结果。LongStream是Stream类的一个长版本。流中的每个元素都被应用到函数中
mapToDouble - DoubleStream mapToDouble ( ToDoubleFunction mapper )
它接受ToDoubleFunction作为参数并返回DoubleStream。ToDoubleFunction是一个功能接口,它有一个抽象的方法,接受输入的双倍值并输出结果。DoubleStream是Stream类的一个双倍版本。流中的每个元素都被应用到函数中。