语境:
我们有一系列鸟类的状态.
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:
...
...
}
Run Code Online (Sandbox Code Playgroud)
我想做的事:
我想得到年龄为10岁的鸟的名字.
然而,有几只年龄相同的鸟类.我只想要第一次出现的名字.
必需的最终结果:
我希望它返回的结果是'大卫'.
目前的结果:
我正在回复"大卫"和"杰克".
我做了什么:
List<BirdStatus<?>> birdStatusesToTake = bird.getStatuses().subList(0, bird.getStatuses().size());
for(BirdStatus birdStatus : birdStatusesToTake){
if (birdStatus.getAge() == 10) {
System.out.println(birdStatus.getName());
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题:
如何只返回年龄为10岁的第一只鸟的名字?
如果您使用的是Java 8或更高版本,则可以这样做:
bird.getStatuses().stream().filter(s -> s.getAge() == 10).findFirst().orElse(null);
Run Code Online (Sandbox Code Playgroud)
在您的代码中使用break:
for(BirdStatus birdStatus : birdStatusesToTake){
if (birdStatus.getAge() == 10) {
System.out.println(birdStatus.getName());
break; //here you can use return birdStatus.getName();
}
}
Run Code Online (Sandbox Code Playgroud)