Rom*_*hoo 0 java java-8 java-stream
题:
举一个ArrayList
的Player
秒- List<Player>
。以一个Player
与POJO String Name
,int age
和int runs
。使用list.add
.
找到第一个年龄小于 30 且跑数大于 5000 的玩家并打印姓名。否则打印“没有选择参加世界杯的球员”
POJO类:
public class Player {
String name;
int age;
int runs;
public Player(String name, int age, int runs) {
super();
this.name = name;
this.age = age;
this.runs = runs;
}
@Override
public String toString() {
return "Player [name=" + name + "]";
}
}
Run Code Online (Sandbox Code Playgroud)
逻辑:
List<Player> players = Arrays.asList(
new Player("Sachin",45,10252),
new Player("Virat",29,7000),
new Player("Dhoni",38,4000),
new Player("Yuvraj",29,5500)
);
List<Player> filtered = players.stream()
.filter(i -> i.runs > 5000 && i.age > 50)
.collect(Collectors.toList());
if(filtered == null) {
System.out.println("No Player selected for World Cup");
} else {
System.out.println(filtered);
}
Run Code Online (Sandbox Code Playgroud)
这里 if 部分没有执行,else 在有效条件下运行良好
使用时collect(Collection.toList())
返回的列表永远不会为空。如果存在没有参数匹配的过滤器,则列表为空。您应该将您的条件更改为filtered.isEmpty()
。
但是请注意,该列表在流中可以为空。
归档时间: |
|
查看次数: |
75 次 |
最近记录: |