内容:

我们有各种各样的鸟类身份。

bird {
 power:
 ...
 ...
 home:
 ...
 ...
 status:
    [0] {age: 2, name: 'John'}
    [1] {age: 4, name: 'Gary'}
    [2] {age: 10, name: 'David'}
    [3] {age: 10, name: 'Jake'}
    [4] {age: 8, name: 'Steve'}
 phone:
 ...
 ...
}


我想做的事:

我想知道那只10岁的小鸟的名字。

但是,有几只鸟的年龄相同。我只想要第一次出现的名字。

所需的最终结果:

我希望它返回的结果是“ David”。

当前结果:

我收到了“大卫”和“杰克”的回信。

我做了什么:

List<BirdStatus<?>> birdStatusesToTake = bird.getStatuses().subList(0, bird.getStatuses().size());

    for(BirdStatus birdStatus : birdStatusesToTake){
      if (birdStatus.getAge() == 10) {
        System.out.println(birdStatus.getName());
      }
    }


我的问题:

如何仅返回年龄10岁的第一只鸟的名字?

最佳答案

如果您使用的是Java 8或更高版本,则可以这样做:

bird.getStatuses().stream().filter(s -> s.getAge() == 10).findFirst().orElse(null);


在您的代码中使用break

for(BirdStatus birdStatus : birdStatusesToTake){
  if (birdStatus.getAge() == 10) {
    System.out.println(birdStatus.getName());
    break;  //here you can use return birdStatus.getName();
  }
}

10-07 17:20