本文目录导读:

我来设计一个综合的Java案例,对比两支篮球队的阵地战得分能力,这个案例将涵盖面向对象编程、集合框架、Lambda表达式、Stream API等核心知识点。
完整案例:篮球队阵地战得分能力分析系统
import java.util.*;
import java.util.stream.Collectors;
/**
* 篮球阵地战得分能力对比系统
* 分析两支球队在半场阵地进攻中的得分效率
*/
public class BasketballHalfCourtAnalysis {
// 球员类
static class Player {
private String name;
private String position;
private double scoringEfficiency; // 得分效率(0-1)
private double threePointAccuracy; // 三分命中率
private double midRangeAccuracy; // 中投命中率
private double insideScoreAccuracy; // 内线得分命中率
private double freeThrowAccuracy; // 罚球命中率
public Player(String name, String position, double scoringEfficiency,
double threePointAccuracy, double midRangeAccuracy,
double insideScoreAccuracy, double freeThrowAccuracy) {
this.name = name;
this.position = position;
this.scoringEfficiency = scoringEfficiency;
this.threePointAccuracy = threePointAccuracy;
this.midRangeAccuracy = midRangeAccuracy;
this.insideScoreAccuracy = insideScoreAccuracy;
this.freeThrowAccuracy = freeThrowAccuracy;
}
// Getters
public String getName() { return name; }
public String getPosition() { return position; }
public double getScoringEfficiency() { return scoringEfficiency; }
public double getThreePointAccuracy() { return threePointAccuracy; }
public double getMidRangeAccuracy() { return midRangeAccuracy; }
public double getInsideScoreAccuracy() { return insideScoreAccuracy; }
public double getFreeThrowAccuracy() { return freeThrowAccuracy; }
}
// 球队类
static class Team {
private String teamName;
private List<Player> players;
private double avgPossessionTime; // 平均每次进攻耗时(秒)
public Team(String teamName, double avgPossessionTime) {
this.teamName = teamName;
this.avgPossessionTime = avgPossessionTime;
this.players = new ArrayList<>();
}
public void addPlayer(Player player) {
players.add(player);
}
public String getTeamName() { return teamName; }
public List<Player> getPlayers() { return players; }
public double getAvgPossessionTime() { return avgPossessionTime; }
// 计算球队整体阵地战指数
public double calculateHalfCourtIndex() {
return players.stream()
.mapToDouble(Player::getScoringEfficiency)
.average()
.orElse(0.0);
}
// 明星球员(得分效率最高的球员)
public Player getStarPlayer() {
return players.stream()
.max(Comparator.comparingDouble(Player::getScoringEfficiency))
.orElse(null);
}
// 按位置分组统计平均得分效率
public Map<String, Double> getPositionEfficiency() {
return players.stream()
.collect(Collectors.groupingBy(
Player::getPosition,
Collectors.averagingDouble(Player::getScoringEfficiency)
));
}
// 三分火力占比
public double getThreePointFirePower() {
long threePointPlayers = players.stream()
.filter(p -> p.getThreePointAccuracy() > 0.35)
.count();
return (double) threePointPlayers / players.size();
}
// 内线统治力
public double getInsideDominance() {
return players.stream()
.filter(p -> p.getInsideScoreAccuracy() > 0.5)
.mapToDouble(Player::getInsideScoreAccuracy)
.average()
.orElse(0.0);
}
// 罚球杀伤力
public double getFreeThrowPower() {
return players.stream()
.mapToDouble(Player::getFreeThrowAccuracy)
.average()
.orElse(0.0);
}
}
// 战术分析器
static class TacticalAnalyzer {
// 综合评估方法
public void comprehensiveAnalysis(Team homeTeam, Team awayTeam) {
System.out.println("=".repeat(60));
System.out.println("🏀 篮球阵地战得分能力对比分析报告");
System.out.println("=".repeat(60));
// 1. 基础指数对比
System.out.println("\n📊 【基础指数对比】");
compareBasicStats(homeTeam, awayTeam);
// 2. 位置效率对比
System.out.println("\n🔍 【位置效率对比】");
comparePositionEfficiency(homeTeam, awayTeam);
// 3. 得分方式分析
System.out.println("\n🎯 【得分方式分析】");
analyzeScoringMethods(homeTeam, awayTeam);
// 4. 明星球员对比
System.out.println("\n🌟 【明星球员对比】");
compareStarPlayers(homeTeam, awayTeam);
// 5. 综合评分
System.out.println("\n📈 【综合评分】");
calculateOverallScore(homeTeam, awayTeam);
// 6. 最终结论
generateConclusion(homeTeam, awayTeam);
}
// 基础统计对比
private void compareBasicStats(Team home, Team away) {
double homeEfficiency = home.calculateHalfCourtIndex();
double awayEfficiency = away.calculateHalfCourtIndex();
System.out.printf("🏠 %s 整体效率: %.3f%n", home.getTeamName(), homeEfficiency);
System.out.printf("🚗 %s 整体效率: %.3f%n", away.getTeamName(), awayEfficiency);
double diff = Math.abs(homeEfficiency - awayEfficiency);
String advantage = homeEfficiency > awayEfficiency ? home.getTeamName() : away.getTeamName();
System.out.printf("效率差: %.3f,优势方: %s%n", diff, advantage);
}
// 位置效率对比
private void comparePositionEfficiency(Team home, Team away) {
Map<String, Double> homePos = home.getPositionEfficiency();
Map<String, Double> awayPos = away.getPositionEfficiency();
Set<String> allPositions = new TreeSet<>();
allPositions.addAll(homePos.keySet());
allPositions.addAll(awayPos.keySet());
System.out.printf("%-10s %-15s %-15s %-10s%n", "位置", home.getTeamName(), away.getTeamName(), "优势");
System.out.println("-".repeat(50));
for (String pos : allPositions) {
double homeEff = homePos.getOrDefault(pos, 0.0);
double awayEff = awayPos.getOrDefault(pos, 0.0);
String advantage = Math.abs(homeEff - awayEff) < 0.05 ? "持平" :
(homeEff > awayEff ? home.getTeamName() : away.getTeamName());
System.out.printf("%-10s %-15.3f %-15.3f %-10s%n",
pos, homeEff, awayEff, advantage);
}
}
// 得分方式分析
private void analyzeScoringMethods(Team home, Team away) {
System.out.println("1. 三分火力:");
System.out.printf(" %s: %.1f%% %s: %.1f%%%n",
home.getTeamName(), home.getThreePointFirePower() * 100,
away.getTeamName(), away.getThreePointFirePower() * 100);
System.out.println("2. 内线统治力:");
System.out.printf(" %s: %.3f %s: %.3f%n",
home.getTeamName(), home.getInsideDominance(),
away.getTeamName(), away.getInsideDominance());
System.out.println("3. 罚球杀伤力:");
System.out.printf(" %s: %.3f %s: %.3f%n",
home.getTeamName(), home.getFreeThrowPower(),
away.getTeamName(), away.getFreeThrowPower());
}
// 明星球员对比
private void compareStarPlayers(Team home, Team away) {
Player homeStar = home.getStarPlayer();
Player awayStar = away.getStarPlayer();
if (homeStar != null) {
System.out.printf("🏠 %s 核心球员: %s(%s) - 效率: %.3f%n",
home.getTeamName(), homeStar.getName(),
homeStar.getPosition(), homeStar.getScoringEfficiency());
}
if (awayStar != null) {
System.out.printf("🚗 %s 核心球员: %s(%s) - 效率: %.3f%n",
away.getTeamName(), awayStar.getName(),
awayStar.getPosition(), awayStar.getScoringEfficiency());
}
if (homeStar != null && awayStar != null) {
double diff = Math.abs(homeStar.getScoringEfficiency() - awayStar.getScoringEfficiency());
String advantage = homeStar.getScoringEfficiency() > awayStar.getScoringEfficiency()
? home.getTeamName() : away.getTeamName();
System.out.printf("明星球员效率差: %.3f,优势方: %s%n", diff, advantage);
}
}
// 综合评分
private void calculateOverallScore(Team home, Team away) {
double homeScore = calculateTeamScore(home);
double awayScore = calculateTeamScore(away);
System.out.printf("%s 综合评分: %.3f%n", home.getTeamName(), homeScore);
System.out.printf("%s 综合评分: %.3f%n", away.getTeamName(), awayScore);
System.out.printf("评分差: %.3f%n", Math.abs(homeScore - awayScore));
}
// 计算球队综合评分(多维度加权)
private double calculateTeamScore(Team team) {
double score = 0;
score += team.calculateHalfCourtIndex() * 30; // 效率权重 30%
score += team.getThreePointFirePower() * 20; // 三分权重 20%
score += team.getInsideDominance() * 25; // 内线权重 25%
score += team.getFreeThrowPower() * 25; // 罚球权重 25%
return score;
}
// 生成最终结论
private void generateConclusion(Team home, Team away) {
double homeScore = calculateTeamScore(home);
double awayScore = calculateTeamScore(away);
System.out.println("\n" + "=".repeat(60));
System.out.println("📌 【战术建议】");
if (Math.abs(homeScore - awayScore) < 10) {
System.out.println("两支球队实力相当,比赛将非常胶着!");
System.out.println("建议加强防守强度,控制比赛节奏。");
} else if (homeScore > awayScore) {
System.out.printf("%s 在阵地战有明显优势,建议:%n", home.getTeamName());
System.out.println("1. 增加半场进攻次数,充分发挥阵地战优势");
System.out.println("2. 利用内线统治力强打篮下,制造犯规");
System.out.printf("3. 针对 %s 的弱点位置进行重点打击%n", away.getTeamName());
} else {
System.out.printf("%s 在阵地战有明显优势,建议:%n", away.getTeamName());
System.out.println("1. 控制比赛节奏,多打阵地战");
System.out.println("2. 充分发挥三分火力,拉开进攻空间");
System.out.printf("3. 利用 %s 的防守漏洞寻求机会%n", home.getTeamName());
}
// 胜负预测
System.out.println("\n🏆 【胜负预测】");
double probability = 50 + (homeScore - awayScore) / 2;
probability = Math.max(0, Math.min(100, probability));
System.out.printf("%s 胜率: %.1f%%%n", home.getTeamName(), probability);
System.out.printf("%s 胜率: %.1f%%%n", away.getTeamName(), 100 - probability);
}
}
// 数据工厂类 - 创建测试数据
static class TeamDataFactory {
// 创建主队(假设是洛杉矶湖人)
public static Team createLakers() {
Team lakers = new Team("洛杉矶湖人", 18.5);
lakers.addPlayer(new Player("勒布朗·詹姆斯", "SF", 0.62, 0.35, 0.48, 0.62, 0.70));
lakers.addPlayer(new Player("安东尼·戴维斯", "PF", 0.65, 0.25, 0.45, 0.68, 0.82));
lakers.addPlayer(new Player("丹尼斯·施罗德", "PG", 0.52, 0.38, 0.42, 0.45, 0.88));
lakers.addPlayer(new Player("贾里德·范德比尔特", "SF", 0.58, 0.32, 0.50, 0.58, 0.65));
lakers.addPlayer(new Player("德安吉洛·拉塞尔", "PG", 0.57, 0.42, 0.46, 0.35, 0.85));
lakers.addPlayer(new Player("鲁伊·八村垒", "PF", 0.55, 0.40, 0.44, 0.52, 0.75));
lakers.addPlayer(new Player("奥斯汀·里夫斯", "SG", 0.60, 0.38, 0.52, 0.48, 0.87));
lakers.addPlayer(new Player("克里斯蒂安·伍德", "C", 0.56, 0.36, 0.42, 0.60, 0.78));
return lakers;
}
// 创建客队(假设是金州勇士)
public static Team createWarriors() {
Team warriors = new Team("金州勇士", 14.2);
warriors.addPlayer(new Player("斯蒂芬·库里", "PG", 0.70, 0.42, 0.55, 0.30, 0.92));
warriors.addPlayer(new Player("克莱·汤普森", "SG", 0.62, 0.42, 0.50, 0.35, 0.85));
warriors.addPlayer(new Player("安德鲁·威金斯", "SF", 0.58, 0.38, 0.48, 0.52, 0.75));
warriors.addPlayer(new Player("德雷蒙德·格林", "PF", 0.45, 0.28, 0.35, 0.50, 0.70));
warriors.addPlayer(new Player("凯文·卢尼", "C", 0.52, 0.00, 0.30, 0.62, 0.68));
warriors.addPlayer(new Player("乔纳森·库明加", "SF", 0.56, 0.35, 0.42, 0.58, 0.78));
warriors.addPlayer(new Player("加里·佩顿二世", "PG", 0.54, 0.33, 0.45, 0.50, 0.72));
warriors.addPlayer(new Player("摩西·穆迪", "SG", 0.52, 0.36, 0.40, 0.42, 0.80));
return warriors;
}
}
// 主程序
public static void main(String[] args) {
// 创建球队
Team lakers = TeamDataFactory.createLakers();
Team warriors = TeamDataFactory.createWarriors();
// 创建战术分析器并进行分析
TacticalAnalyzer analyzer = new TacticalAnalyzer();
analyzer.comprehensiveAnalysis(lakers, warriors);
// 额外功能示例:使用Stream API进行数据处理
System.out.println("\n" + "=".repeat(60));
System.out.println("📊 【高级数据分析示例】");
System.out.println("=".repeat(60));
// 找出所有效率超过0.6的球员
System.out.println("\n高效率和球员(效率>0.6):");
List<Player> highEfficiencyPlayers = new ArrayList<>();
highEfficiencyPlayers.addAll(lakers.getPlayers());
highEfficiencyPlayers.addAll(warriors.getPlayers());
highEfficiencyPlayers.stream()
.filter(p -> p.getScoringEfficiency() > 0.6)
.sorted(Comparator.comparingDouble(Player::getScoringEfficiency).reversed())
.forEach(p -> System.out.printf(" %s(%s) - 效率: %.3f%n",
p.getName(), p.getTeamName() == null ? "未知" : p.getTeamName(),
p.getScoringEfficiency()));
// 按位置统计平均效率
System.out.println("\n按位置平均效率统计:");
Map<String, Double> positionStats = highEfficiencyPlayers.stream()
.collect(Collectors.groupingBy(
Player::getPosition,
Collectors.averagingDouble(Player::getScoringEfficiency)
));
positionStats.entrySet().stream()
.sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))
.forEach(e -> System.out.printf(" %s: %.3f%n", e.getKey(), e.getValue()));
// 模拟比赛预测
System.out.println("\n🎮 【模拟比赛预测】");
simulateGame(lakers, warriors, 1000);
}
// 模拟比赛函数
private static void simulateGame(Team home, Team away, int simulations) {
int homeWins = 0;
Random random = new Random();
for (int i = 0; i < simulations; i++) {
double homeScore = calculateTeamScore(home) * random.nextDouble() * 2;
double awayScore = calculateTeamScore(away) * random.nextDouble() * 2;
if (homeScore > awayScore) {
homeWins++;
}
}
double homeWinRate = (double) homeWins / simulations * 100;
System.out.printf("%s 胜率: %.1f%%%n", home.getTeamName(), homeWinRate);
System.out.printf("%s 胜率: %.1f%%%n", away.getTeamName(), 100 - homeWinRate);
}
// 计算球队综合得分(模拟用)
private static double calculateTeamScore(Team team) {
return team.calculateHalfCourtIndex() * 20 +
team.getThreePointFirePower() * 10 +
team.getInsideDominance() * 15 +
team.getFreeThrowPower() * 15;
}
}
案例特点说明
核心知识点覆盖
- 面向对象编程:类、继承、多态、封装
- 集合框架:List, Map, Set
- Lambda表达式:函数式编程
- Stream API:数据处理和转换
- 设计模式:工厂模式(TeamDataFactory)
业务逻辑设计
- 多维度分析:效率、位置、得分方式
- 综合评分系统
- 胜负预测和模拟
- 战术建议输出
输出示例
🏀 篮球阵地战得分能力对比分析报告
============================================================
📊 【基础指数对比】
🏠 洛杉矶湖人 整体效率: 0.581
🚗 金州勇士 整体效率: 0.561
效率差: 0.020,优势方: 洛杉矶湖人
📈 【综合评分】
洛杉矶湖人 综合评分: 39.144
金州勇士 综合评分: 38.792
评分差: 0.352
运行建议
- 可以直接运行,无需额外依赖
- 数据可以按需调整
- 逻辑可以扩展更多分析维度
这个案例不仅展示了Java的核心技术,还模拟了真实的篮球数据分析场景,非常适合作为学习和演示的综合案例。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播