Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 8流从一个数组替换另一个数组中的对象_Java_Java 8_Java Stream - Fatal编程技术网

Java 8流从一个数组替换另一个数组中的对象

Java 8流从一个数组替换另一个数组中的对象,java,java-8,java-stream,Java,Java 8,Java Stream,我有两个对象数组。我想用第二个数组中更新的对象更新一个数组,如果该对象符合某个条件。例如,我有: public class Foobar { private String name; // Other methods here... public String getName() { return this.name; } } Foobar [] original = new Foobar[8]; // Instantiate them here and set thei

我有两个对象数组。我想用第二个数组中更新的对象更新一个数组,如果该对象符合某个条件。例如,我有:

public class Foobar
{
   private String name;

   // Other methods here...

   public String getName() { return this.name; }
}

Foobar [] original = new Foobar[8];
// Instantiate them here and set their field values

Foobar [] updated = new Foobar[8];
// Instantiate them here and set their field values

/* Use Java8 stream operation here
*   - Check if name is the same in both arrays
*   - Replace original Foobar at index with updated Foobar
*
*   Arrays.stream(original).filter(a -> ...)
*/

我知道我可以制作一个简单的for循环来实现这一点。我想知道是否可以使用流来实现这一点。我不知道在过滤器中或之后应该放什么。

这里可以使用的一个巧妙技巧是创建一个索引流,并使用它们来评估相应的元素:

IntStream.range(0, original.length)
         .filter(i -> original[i].getName().equals(updated[i].getName()))
         .forEach(i -> original[i] = updated[i]);

如果需要帮助,您必须明确标准。此操作的基于流的代码不会像此操作的直接传统代码那样清晰或高效。不用麻烦了,你说的效率是对的。它似乎比传统的for循环方法运行得慢。然而,我认为Mureinik发布的答案相当可读。