Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.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中,当过滤器只返回一个对象时,如何使用流和过滤器将值填充到对象中_Java_Foreach_Java Stream - Fatal编程技术网

在java中,当过滤器只返回一个对象时,如何使用流和过滤器将值填充到对象中

在java中,当过滤器只返回一个对象时,如何使用流和过滤器将值填充到对象中,java,foreach,java-stream,Java,Foreach,Java Stream,我有一个包含ChildObject集合的parentObject。这些子对象具有不同的子名称。 因此,如果我使用childName筛选子对象,则只会返回一个对象。使用forEach填充值效果很好,但在这种情况下不需要使用forEach,因为只返回一个子对象。 这是我当前的代码 Child childOne = new Child("ken"); Child childTwo = new Child("mathew"); Collection<Child> collectionOfC

我有一个包含ChildObject集合的parentObject。这些子对象具有不同的子名称。 因此,如果我使用childName筛选子对象,则只会返回一个对象。使用forEach填充值效果很好,但在这种情况下不需要使用forEach,因为只返回一个子对象。 这是我当前的代码

Child childOne = new Child("ken");
Child childTwo = new Child("mathew");

Collection<Child> collectionOfChildObjects = new ArrayList<>();
collectionOfChildObjects.add(childOne);
collectionOfChildObjects.add(childTwo);
parentObject.setCollectionOfChildObjects(collectionOfChildObjects);

String value="ken";
parentObject.getCollectionOfChildObjects().stream()
    .filter(childObject-> Objects.equals(
        value,
        childObject.getChildName()))
    .forEach(childObj-> {
        childObj.setAge(5);
    });

有人能解释一下如何在不使用forEach的情况下填充值。

findAny().ifPresent(…)
。如果你试过的东西“不起作用”,那么把你试过的东西贴出来,并准确地解释它是如何不起作用的。这样,我们就可以解释为什么您尝试的方法不起作用,并给出解释或提示以修复它。@runefist getCollectionOfChildObjects()基本上返回一组对象。对于这些对象,我需要更改值。@JBNizet我不会使用它,如果它找到多个“ken”值(在本例中),它只会更改1,我认为他不希望出现这种行为。也许这篇文章会对你有所帮助:@runefist当然forEach对性能有影响。流是惰性的,因此过滤器将继续搜索其他匹配项,直到到达集合的末尾。findAny将在找到匹配元素后立即停止迭代。可选。ifPresent()不返回布尔值。它返回无效。它以消费者为论据。因此,它与Stream.forEach()具有完全相同的签名。因此,使用它的方式与使用forEach的方式相同:通过传递lambda来修改包含在可选对象中的对象。就是你传给forEach的同一个lambda。
class Child(){

private String name;
private int age;

public Child(String name){
  this.name = name;
}

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

}