java - 过滤一个可选的> 在 java8 中
问题描述
我正在尝试Optional<List<Object>>
在 Java8 中过滤一个。在下面的示例中,我尝试过滤列表,而不收集完整列表(玩家)。这可能吗?
public List<Player> getPlayers(int age, Team team) {
Optional.ofNullable(team).map(Team::getPlayers);
// needs to filter players older than 20 years, without collecting it as a list.
}
class Team {
String name;
List<Player> players;
public String getName() {
return name;
}
public void setName(final String name) {
this.name = name;
}
public List<Player> getPlayers() {
return players;
}
public void setPlayers(final List<Player> players) {
this.players = players;
}
}
class Player {
String playerName;
String age;
public String getPlayerName() {
return playerName;
}
public void setPlayerName(final String playerName) {
this.playerName = playerName;
}
public String getAge() {
return age;
}
public void setAge(final String age) {
this.age = age;
}
}
解决方案
随着方法的更新签名,您似乎正在寻找的是:
public List<Player> getPlayers(Team team, int age) {
return Optional.ofNullable(team).map(Team::getPlayers)
.orElse(Collections.emptyList())
.stream()
.filter(a -> Integer.parseInt(a.getAge()) > 20)
.collect(Collectors.toList());
}
推荐阅读
- arrays - 如何使用 React 交错按钮道具滚动到部分
- java - 在 Spring 中使用 Authentication 类测试控制器
- sql-server - SQLSERVER 2017:选择按日期排序的连续组的第一次出现
- python - 对多个数据框和列应用函数
- java - 无法在 vscode 中调试 Maven 项目,因为 Maven 插件为空
- c++ - WSASockets 是否能够在不使用管道的情况下获取进程 I/O?
- python - 在 Python 中获取 MySQL 日期时间字段时忽略秒数
- laravel - Laravel 中的会话仅在本地类中可用
- postman - 在 Postman 中使用集合变量
- elasticsearch - 弹性搜索索引模式中的计算字段