JAVA 8 : HOW TO MERGE TWO LIST USING 2 STREAM

标签 java list java-stream

你好,我写了以下代码

for (Object1 o1 : listObject1) {
  boolean found = false;
  for (Object2 o2 : listObject2) {
    found = o2.getKey().equals(o1.getKey());
    if (found) break;
  }
  if (!found) listObject2.add(new Object2(o1.getKey()));
}

但我想使用流在 Java 8 中编写它。我尝试使用 flatMap 但没有成功。有人能帮我吗 ?并向我解释一下 flatmap 的用法?

谢谢

最佳答案

如果您的目标是提高可读性,那么我认为您获得的最大 yield 不是通过流,而是通过缓存第二个列表中元素的键(如果您愿意,可以通过流来完成)

Set<String> keysInList2 = listObject2.stream()
                                     .map(Object2::getKey)
                                     .collect(Collectors.toSet());

如果您可以添加到listObject1中对象的另一个键,那么这意味着该键尚未存在于集合中。在这种情况下,您还应该将具有此类键的新 Object2 元素添加到 listObject2

for (Object1 o1 : listObject1) {
    if (keysInList2.add(o1.getKey())){
        listObject2.add(new Object2(o1.getKey()));
    }
}

关于JAVA 8 : HOW TO MERGE TWO LIST USING 2 STREAM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61111040/

相关文章:

java - Android - 编辑操作栏按钮文本

java - Java中ArrayList的交集和并集

Java-8:流还是更简单的解决方案?

java - 使用 MainActivity 中的布局在抽屉导航中显示登录用户

java - 为什么 Dagger 2 中需要@SubComponent?

java - 对象引用未保存的 transient 实例 : how to flush or return saved object

python - 在python中找到两个二维数组之间的区别

list - raku从头开始做转子的更好方法是什么?

java - 在 Java 中使用 Optional 和 Streams

Java 8 : IntStream to Integer[]