【问题标题】:Add two lists in java8? [closed]在java8中添加两个列表? [关闭]
【发布时间】:2020-10-02 20:22:35
【问题描述】:

我正在尝试在 java 8 中添加两个列表。 这两个列表都来自 json 中的单独对象,但我想在 java 代码中将它们一起放入一个新对象中。

我已经尝试过 listUtils.union 但这会作为两个数组添加到新对象中。 addAll 方法和流 .concat() 也报错。

例子:

Json 有:

“对象 1”:[{ 测试:“2” }]

“对象 2”:[{ 测试:“2” }]

尝试将哈希映射添加到对象“newobject”中,但我必须调用方法来获取新列表。

例如:

Newlist = listUtils.Union(addobject1(), addObject1) (这些是从 json 返回我的列表的方法名称。

put(“newobject”, newlist)

有什么建议吗?

【问题讨论】:

  • 使用更多代码和尤其是您正在使用的变量类型会更清楚这个问题。获得正确的类型可能是这里 90% 的工作。
  • 都是字符串
  • 那么它们是否存储为List<String>?字符串是单个元素,还是必须解析的 JSON 字符串?
  • 是的,它们是列表,我循环遍历它们,将它们添加到一个列表变量中,然后我想将它一起添加到我以相同方式处理的第二个对象中。
  • @Yankeecandle 你为什么不分别edit and update你的问题?请至少提供一些sn-p。另外,您是否至少尝试过谷歌的解决方案?我很确定网上有很多关于如何合并/加入两个列表的示例。

标签: java arrays list stream concat


【解决方案1】:

根据 JSON 字符串,你有一些 POJO 的列表:

class MyPojo {
    private final String test;

    public MyPojo(String t) {this.test = t; }

    public String getTest() {return test; }

    @Override
    public String toString() {
        return "{ test: " + test + "}";
    }
}

那么object1object2是输入列表,有几种合并方式:

  1. 使用Stream.concat
Stream.concat(object1.stream(), object2.stream()).collect(Collectors.toList());
  1. 使用Stream.of
Stream.of(object1, object2)
      .flatMap(List::stream)
      .collect(Collectors.toList());
  1. 使用addAll
List<MyPojo> result = new ArrayList<>(object1);
result.addAll(object2);
  1. 列表的流式列表
Arrays.asList(object1, object2)
      .stream()
      .flatMap(List::stream)
      .collect(Collectors.toList());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-07
    • 2019-12-07
    • 1970-01-01
    • 2011-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多