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发布的答案相当可读。