上下文:
我们有各种各样的鸟类身份。
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'。
当前结果:
我正在退还'David'和'Jake'。
我所做的事情:
List<BirdStatus<?>> birdStatusesToTake = bird.getStatuses().subList(0, bird.getStatuses().size());
for(BirdStatus birdStatus : birdStatusesToTake){
if (birdStatus.getAge() == 10) {
System.out.println(birdStatus.getName());
}
}
我的问题:
我如何只返回年龄10岁的第一只鸟的名字?
答案 0 :(得分:5)
如果您使用的是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();
}
}
答案 1 :(得分:-1)
您还可以创建一个从0开始的计数器,将if语句放入仅在计数器为0时有效的while循环中,然后在if主体中向计数器添加1:
int counter = 0;
while ( counter == 0){for(BirdStatus birdStatus : birdStatusesToTake){
if (birdStatus.getAge() == 10) {
System.out.println(birdStatus.getName());
counter ++;
}
}