【问题标题】:Create an array of string with an element from a list [closed]使用列表中的元素创建字符串数组[关闭]
【发布时间】:2019-12-24 14:13:51
【问题描述】:

有一个list,其中包含四个字符串 --> 员工详细信息(ID、姓名、经理 ID 等 -- 都是字符串类型)。

首先需要过滤具有不同 ID 的列表。

需要从中获取列表中每个对象的 ID 并将其存储为 ID 数组。这只是我将所有不同的员工 ID 传递给不同的功能。

List<ViewData> list = getDataList();
list = list.parallelStream()
            .filter(distinctByKey(ViewData::getId))
            .collect(Collectors.toList());

我正在考虑创建一个本地字符串数组并使用 forEach 从每个对象中收集所需的字符串并将其作为元素存储在列表中,最后将其传递给函数。我该怎么做?我已经在列表中尝试了 forEach,但无法了解如何遍历每个对象并将值存储到数组中。

类似的东西:

String[] allIds;
list.forEach(id -> allIds[] = getId);

【问题讨论】:

  • 请提供输入输出细节。
  • 你能澄清一下吗?数据存储在字符串上?该列表包含过滤的员工详细信息(ID、姓名、经理 ID 等)。我想从列表中的每个对象中取出员工的 ID,并将其存储为 ID 数组。这只是与我需要传递给不同功能的约束相匹配的员工 ID。

标签: arrays list java-8


【解决方案1】:

看来你要找的是:

String[] allIds = 
    getDataList().parallelStream() 
                 .map(ViewData::getId)
                 .distinct()
                 .toArray(String[]::new);

【讨论】:

  • ViewData 是什么?我可以用包含我过滤列表的list 替换getDataList(),而getId() 将是从列表中返回id 的getter?
  • @BharathYes ViewData 是出现在你的问题中的一个类,所以你应该知道它比我做得更好。
  • @BharathYes 我认为.filter(distinctByKey(ViewData::getId)) 是过滤重复 ID 的失败尝试。如果您按照我的建议使用map 后跟distinct,则不需要它。
  • 谢谢,我对ViewData 感到困惑。 distinctByKey 是以前使用过的函数。将在集成和测试后确认...查找资源/文档以了解有关此类编程的更多信息会很有帮助...我正在尝试在没有经验的情况下进行此操作。
  • 可以根据一个列值将列表设为filtered,然后使用map 收集不同的列值存储在字符串中吗?问像this
猜你喜欢
  • 1970-01-01
  • 2012-10-31
  • 1970-01-01
  • 2018-11-09
  • 2014-02-10
  • 1970-01-01
  • 2019-11-15
  • 2020-07-21
  • 2020-04-02
相关资源
最近更新 更多