gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 09:09:52 25 4
gpt4 key购买 nike

我似乎有点卡住了,一直无法在网上寻找解决方案。欢迎所有和任何指向其他线程和反馈的指针。

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

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;
}
...

下面是第三个评级构造函数的尝试实现;

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() 方法打印返回的列表时,我得到了这个;

[Rating{0, 1, null, 0}, Rating{0, 8, null, 0}, Rating{0, 2, null, 0}, Rating{0, 3, null, 0}, ... etc]

从上面的内容来看,我猜测正在使用评级的默认(?)构造函数。

我想以与使用特定构造函数将它们保存到 ArrayList 时相同的格式(Rating{1, 4.0})打印它们。

此外,您是否建议使用单独的类,而不是尝试在评级类中使用额外的构造函数。

对于使用错误的术语或任何内容,非常感谢和歉意。所有反馈都非常有值(value)。

马特

最佳答案

I'm guessing the default(?) constructor for Rating is being used

由于您传递了 longdouble 参数,因此将调用带有 Rating(long movieId, doubleaverageRating) 的构造函数。

I would like to print them in the same format(Rating{1, 4.0})

如果要格式化要显示的 Rating(列表)输出,则需要在 Rating 类中重写 toString()如下图:

public class Rating {

//add existing code here

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

关于java - 打印特定类型但使用不同构造函数存储的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40986037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com