答案:设计User、Movie、Rating类并用Map和List存储数据,通过统计用户评分偏好类型实现基于内容的推荐,结合控制台交互功能提供个性化电影推荐。

开发一个简易的电影评分与推荐系统,可以使用Java结合基础的数据结构和简单的推荐算法来实现。重点在于管理用户、电影、评分数据,并基于用户行为提供个性化推荐。以下是具体实现思路和步骤。
系统需要几个核心类来表示实体和关系:
class User {
int userId;
String name;
public User(int userId, String name) {
this.userId = userId;
this.name = name;
}
}
class Movie {
int movieId;
String title;
String genre;
public Movie(int movieId, String title, String genre) {
this.movieId = movieId;
this.title = title;
this.genre = genre;
}
}
class Rating {
int userId;
int movieId;
int score; // 1-5
public Rating(int userId, int movieId, int score) {
this.userId = userId;
this.movieId = movieId;
this.score = score;
}
}
使用Map和List来保存用户、电影和评分数据,便于快速查找和操作。
Map<Integer, User>按ID存储用户Map<Integer, Movie>存储电影List<Rating>或Map<String, Integer>(组合键)存评分初始化一些测试数据,方便后续计算推荐。
立即学习“Java免费学习笔记(深入)”;
可以采用“基于内容的推荐”或“协同过滤”的简化版本。
基于类型偏好推荐:
public List<Movie> recommendByGenre(int userId) {
// 获取用户所有评分
List<Rating> userRatings = ratings.stream()
.filter(r -> r.userId == userId)
.toList();
// 计算用户对各类型的平均分
Map<String, Double> genreScores = new HashMap<>();
Map<String, Integer> genreCount = new HashMap<>();
for (Rating r : userRatings) {
Movie m = movies.get(r.movieId);
if (m != null) {
genreScores.put(m.genre, genreScores.getOrDefault(m.genre, 0.0) + r.score);
genreCount.put(m.genre, genreCount.getOrDefault(m.genre, 0) + 1);
}
}
// 找出用户最喜欢的类型
String favoriteGenre = null;
double maxAvg = 0;
for (String genre : genreScores.keySet()) {
double avg = genreScores.get(genre) / genreCount.get(genre);
if (avg > maxAvg) {
maxAvg = avg;
favoriteGenre = genre;
}
}
// 推荐该类型中未评分的高分电影
return movies.values().stream()
.filter(m -> m.genre.equals(favoriteGenre))
.filter(m -> userRatings.stream().noneMatch(r -> r.movieId == m.movieId))
.sorted((a, b) -> Double.compare(getAverageRating(b.movieId), getAverageRating(a.movieId)))
.limit(5)
.toList();
}
通过控制台输入输出,让用户添加评分、查看推荐。
Scanner读取用户输入例如:
System.out.println("1. 评分电影 2. 查看推荐 3. 退出");
int choice = scanner.nextInt();
根据选择调用对应方法。
基本上就这些。这个系统虽简单,但涵盖了推荐系统的基本要素:数据建模、用户行为分析和推荐生成。后续可扩展为Web应用,加入更多算法如余弦相似度或用户协同过滤。
以上就是Java如何开发一个简易的电影评分与推荐系统的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号