当前位置: 首页 > 知识库问答 >
问题:

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

拓拔霄
2023-03-14

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

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

List<Object[]> results = loadFromDB();

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

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));
    }
}

正如您所看到的,原始列表中存在的每个元素都是对象[]的数组表示

现在,我知道如何使用循环来实现这一点,正如您在下面看到的,只需3行代码:

  List<DeviationRisk> deviations = new ArrayList<>();
        for (Object[] res : results) {
            deviations.add(new DeviationRisk(res));
        }

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

共有2个答案

嵇光临
2023-03-14

这将做到:

final List<DeviationRisk> l = results.stream()
    .map(DeviationRisk::new).collect(Collectors.toList());

这项工作是因为新的偏差风险被视为一个函数

山煜祺
2023-03-14

您可以尝试:

List<DeviationRisk> result = results.stream()
                                    .map(DeviationRisk::new)
                                    .collect(Collectors.toList())
 类似资料:
  • 问题内容: 我想使用Java 8技巧在一行中执行以下操作。 给定此对象定义: 和a ,我想得到a ,它是第一个列表中所有s对象的列表- 顺序相同。 我可以使用Java中的循环来做到这一点,但我相信Java8中应该有一个单行lambda可以做到这一点。我无法在线找到解决方案。也许我没有使用正确的搜索词。 有人可以为这种转换建议一个lambda或另一种线吗? 问题答案: 这应该可以解决问题: 也就是说

  • 我可以在Java中使用循环来实现这一点,但我认为在Java8中应该有一个一行程序lambda来实现这一点。我无法在网上找到解决方案。也许我没有使用正确的搜索词。 有人能为这个转换提出一个lambda或另一个一行程序吗?

  • 我有一个对象列表(选择查询的结果),我想将其转换为一个数组,并且我想将查询的每一列放入数组中的一列中。我在论坛上尝试了许多解决方案,但我没有找到解决方案。 在我的bean中,我有以下列表: 现在我想要的是将 List()的每一列放在一个多维数组列表中,这样就好像我想访问数组列表中的特定单个值一样,我就这样做了。

  • 我正在查看的文档,我看到了方法,但无法直接转到 是否有方法将转换为?

  • 问题内容: 我正在从事Spring MVC项目。我正在使用Hibernate。我想将AJAX与jQuery结合使用,以从Spring Controller中获取一些JSON。不幸的是,当我在应用程序中实现方法时,出现了一个错误: 我必须使用哪种适配器以及以哪种方式使用?该方法的最后一行发生了错误: 这是我在Spring MVC项目中与Hibernate一起使用的班级: 编辑 我想知道:我的对象是代

  • 问题内容: 我有如下的Json字符串 我想将Json字符串转换为以下类 我的反序列化代码是 但是我在序列化后得到空值,我该如何解决呢? 问题答案: 正如其他人已经指出的那样,未获得预期结果的原因是因为JSON与尝试反序列化的类结构不匹配。您需要更改JSON或更改类。由于其他人已经展示了如何更改JSON,因此在这里我将采用相反的方法。 为了与您在问题中发布的JSON相匹配,您的类应按照以下定义。注意