Stream和集合的映射方式很类似。
具体的方法就是:在Mapper中定义方法,参数是Stream,然后返回值是一个集合就行。然后MapStruct就会生成具体的实现类,将来就可以自动映射了。
下面看一个例子:
@Mapper
public interface StreamMapper {
StreamMapper INSTANCE = Mappers.getMapper(StreamMapper.class );
Set<String> integerStreamToStringSet(Stream<Integer> integers);
}
public class Test {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(1);
Set<String> strings = StreamMapper.INSTANCE.integerStreamToStringSet(list.stream());
System.out.println(strings); //[1]
}
}
其实通过一个方法就可以把Stream中的内容赋值给一个集合的原理就是,MapStruct会通过Stream的map方法拿到Stream中的每个值,然后再放到一个新的集合中。具体看上面代码生成的实现类就明白了,如下图:
上面我们在Mapper中写的是方法的返回值是Set,其实List当返回值也行,只要返回值是集合,Stream都可以映射成功。
这篇内容很少。大家只要知道了怎么使用就行