打印特定类型的对象,但使用不同的构造函数存储

时间:2016-12-06 00:54:21

标签: java eclipse

我似乎有点陷入困境,无法在线寻找解决方案。欢迎所有和任何指向其他线程和反馈的指针。

下面是具有多个构造函数的类;

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类中的额外构造函数。

非常感谢和使用错误的术语或任何事情道歉。所有反馈都非常有价值。

马特

1 个答案:

答案 0 :(得分:1)

  

我猜测正在使用评级的默认(?)构造函数

因为您传递了longdouble个参数,所以将调用Rating(long movieId, double averageRating)的构造函数。

  

我想以相同的格式打印它们(评分{1,4.0})

如果要格式化要显示的Rating(列表)输出,则需要覆盖toString()类中的Rating,如下所示:

public class Rating {

   //add existing code here

    public String toString() {
            return novieId + "," + averageRating;
    }
 }