首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java 8-如何将数组列表转换为特定类对象的列表

Java 8-如何将数组列表转换为特定类对象的列表
EN

Stack Overflow用户
提问于 2015-01-27 13:47:43
回答 2查看 4.4K关注 0票数 9

使用Java 8 Stream包,我希望将类型对象的数组列表转换为特定类对象的列表。第一个列表中的数组包含从数据库加载的类的字段。

这是从DB加载的类型对象数组的列表:

代码语言:javascript
运行
复制
List<Object[]> results = loadFromDB();

列表中的每个元素Object[]都包含要映射到以下类的字段:

代码语言:javascript
运行
复制
class DeviationRisk {
    Timestamp plannedStart;
    Timestamp plannedEnd;
    String rcsName;
    BigDecimal riskValue;
    BigDecimal mediumThreshold;
    BigDecimal highThreshold;
    Interval interval;

    String getRcsName() {
        return rcsName;
    }

    DeviationRisk(Object[] res) {
        this((Timestamp) res[0], (Timestamp) res[1], (String) res[2], (BigDecimal) res[3], (BigDecimal) res[4], (BigDecimal) res[5]);

    }

    DeviationRisk(Timestamp start, Timestamp end, String rcs, BigDecimal risk, BigDecimal medium, BigDecimal high) {
        plannedStart = start;
        plannedEnd = end;
        rcsName = rcs;
        riskValue = risk;
        mediumThreshold = medium;
        highThreshold = high;
        interval = new Interval(plannedStart.getTime(), plannedEnd.getTime());
    }

    DeviationRisk create(Object[] res) {
              return new DeviationRisk(res);
          }

    List<DateTime> getRange() {
        return DateUtil.datesBetween(new DateTime(plannedStart), new DateTime(plannedEnd));
    }
}

正如您可以看到原始列表Object[]中的每个元素results一样,它只是对象DeviationRisk的数组表示

现在,我知道如何使用循环(循环)来完成这一任务--这仅仅是3行代码,如下所示:

代码语言:javascript
运行
复制
  List<DeviationRisk> deviations = new ArrayList<>();
        for (Object[] res : results) {
            deviations.add(new DeviationRisk(res));
        }

如何使用Java 8流实现相同的结果?

EN

Stack Overflow用户

发布于 2015-01-27 13:50:39

这样可以做到:

代码语言:javascript
运行
复制
final List<DeviationRisk> l = results.stream()
    .map(DeviationRisk::new).collect(Collectors.toList());

之所以这样做,是因为编译器将DeviationRisk::new视为Function<Object[], DeviationRisk>

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

https://stackoverflow.com/questions/28172048

复制
相关文章

相似问题

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