Java案例:统计球员评分最高者
下面是一个完整的Java案例,演示如何统计球员评分最高者。

完整代码
import java.util.*;
public class PlayerScoreDemo {
// 球员类
static class Player {
private String name;
private int score;
public Player(String name, int score) {
this.name = name;
this.score = score;
}
public String getName() { return name; }
public int getScore() { return score; }
@Override
public String toString() {
return "Player{name='" + name + "', score=" + score + "}";
}
}
public static void main(String[] args) {
// 1. 准备数据
List<Player> players = Arrays.asList(
new Player("梅西", 92),
new Player("C罗", 95),
new Player("姆巴佩", 89),
new Player("哈兰德", 95),
new Player("内马尔", 88)
);
// 2. 找出最高分
int maxScore = players.stream()
.mapToInt(Player::getScore)
.max()
.orElse(0);
// 3. 找出所有最高分球员(可能并列)
List<Player> topPlayers = players.stream()
.filter(p -> p.getScore() == maxScore)
.toList();
// 4. 输出结果
System.out.println("最高分:" + maxScore);
System.out.println("评分最高的球员:");
topPlayers.forEach(System.out::println);
}
}
运行结果
最高分:95
评分最高的球员:
Player{name='C罗', score=95}
Player{name='哈兰德', score=95}
关键点解析
| 步骤 | 方法 | 说明 |
|---|---|---|
| 求最高分 | mapToInt(...).max() |
将对象流转换为int流求最大值 |
| 筛选最高者 | filter(...) |
保留评分等于最高分的球员 |
| 收集结果 | toList() |
Java 16+ 用法,也可用 collect(Collectors.toList()) |
传统写法(不用Stream)
如果不想用Stream API,也可以这样写:
Player best = null;
for (Player p : players) {
if (best == null || p.getScore() > best.getScore()) {
best = p;
}
}
System.out.println("最高分球员:" + best);
扩展:处理并列 + 排序
若需要按评分从高到低排序并取第一名:
List<Player> sorted = players.stream()
.sorted(Comparator.comparingInt(Player::getScore).reversed())
.toList();
System.out.println("排名第一:" + sorted.get(0));
如果需要我可以再补充从控制台输入球员数据或从文件读取的版本。