首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用Java 8 Lambda表达式将一种类型的列表转换为其子类型的列表

如何使用Java 8 Lambda表达式将一种类型的列表转换为其子类型的列表
EN

Stack Overflow用户
提问于 2016-03-26 01:48:48
回答 3查看 9.5K关注 0票数 20

我似乎只能在C#中找到如何做到这一点,而不是Java。

我有一个List<TypeX>,但我知道该列表中的每个元素实际上都是TypeX的一个子类,称为TypeY

如何编写接受List<TypeX>并返回List<TypeY>的Lambda表达式

EN

回答 3

Stack Overflow用户

发布于 2016-03-26 01:53:32

在Java中,投影是使用map方法完成的:

代码语言:javascript
复制
List<TypeY> res = listTypeX
    .stream()
    .map((x) -> (TypeY)x)
    .collect(Collectors.toList());
票数 7
EN

Stack Overflow用户

发布于 2016-03-26 01:53:22

所有的map都有一个转换元素的lambda:

代码语言:javascript
复制
List<TypeX> list = ...;
List<TypeY> castList = 
    list.stream().map(x -> (TypeY)x).collect(Collectors.toList());
票数 4
EN

Stack Overflow用户

发布于 2016-03-26 05:01:30

您可以从Eclipse Collections使用selectInstancesOf()

代码语言:javascript
复制
MutableList<TypeX> xList = Lists.mutable.empty();
MutableList<TypeY> yList = xList.selectInstancesOf(TypeY.class);

如果不能从List更改xList

代码语言:javascript
复制
List<TypeX> xList = Lists.mutable.empty();
List<TypeY> yList = ListAdapter.adapt(xList).selectInstancesOf(TypeY.class);

注意:我是Eclipse Collections的贡献者。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36225105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档