我似乎有点陷入困境,无法在线寻找解决方案。欢迎所有和任何指向其他线程和反馈的指针。
下面是具有多个构造函数的类;
public class Rating
{
public long userId, movieId, timestamp;
public Integer rating;
public double averageRating;
public Rating(long userId, long movieId, Integer rating, long timestamp)
{
this.userId = userId;
this.movieId = movieId;
this.rating = rating;
this.timestamp = timestamp;
}
public Rating(long userId, long movieId, int rating)
{
this.userId = userId;
this.movieId = movieId;
this.rating = rating;
}
public Rating(long movieId, double averageRating)
{
this.movieId = movieId;
this.averageRating = averageRating;
}
...
以下是尝试实施第三个Rating构造函数;
public List<Rating> getTopTenMovies()
{
comparator = new RatingByRatingComparator(); //Sorts averageRating in descending order
List<Rating> topTen = new ArrayList<>();
for (Movie movie: movies.values())
{
long movieId = movie.movieId;
double averageRating = movie.getAverageRating();
Rating rating = new Rating(movieId, averageRating);
topTen.add(rating);
}
Collections.sort(topTen, comparator);
if (topTen.size() > 10)
{
return topTen.subList(0, 9);
}
else
{
return topTen;
}
}
当我从getTopTenMovies()方法打印返回的List时,我得到了这个;
[Rating{0, 1, null, 0}, Rating{0, 8, null, 0}, Rating{0, 2, null, 0}, Rating{0, 3, null, 0}, ... etc]
从上面开始,我猜测正在使用Rating的默认(?)构造函数。
我想以相同的格式(Rating {1,4.0})打印它们,我使用特定的构造函数将它们保存到ArrayList。
另外,您是否建议使用单独的类,而不是尝试使用Rating类中的额外构造函数。
非常感谢和使用错误的术语或任何事情道歉。所有反馈都非常有价值。
马特
答案 0 :(得分:1)
我猜测正在使用评级的默认(?)构造函数
因为您传递了long
和double
个参数,所以将调用Rating(long movieId, double averageRating)
的构造函数。
我想以相同的格式打印它们(评分{1,4.0})
如果要格式化要显示的Rating
(列表)输出,则需要覆盖toString()
类中的Rating
,如下所示:
public class Rating {
//add existing code here
public String toString() {
return novieId + "," + averageRating;
}
}