如何构造含两个二维矩阵的Java对象?代码正确性验证
你的Cfiltering构造方法实现是正确的!
首先可以明确告诉你:你写的这个带参构造方法完全符合需求,确实构造出了包含两个指定尺寸二维矩阵的Cfiltering对象,你的理解和实现方向都是对的。
为什么这是正确的?
在Java中,一个类的对象就是该类的实例,它会包含类中定义的所有成员变量(属性)和方法。你的代码逻辑清晰准确:
- 先在
Cfiltering类中声明了两个私有成员变量,明确了对象要承载的核心数据结构:private int userMovieMatrix[][];:用于存储用户对电影的整数评分private float userUserMatrix[][];:用于存储用户之间的浮点数相似度分数
- 在带参构造方法
Cfiltering(int numberOfUsers, int numberOfMovies)中,你根据传入的参数精准初始化了两个二维数组:userMovieMatrix = new int [numberOfUsers][numberOfMovies];创建了用户数×电影数的二维整数数组,完美匹配评分存储的维度需求userUserMatrix = new float [numberOfUsers][numberOfUsers];创建了用户数×用户数的二维浮点数数组,完全对应相似度矩阵的维度要求
当你通过new Cfiltering(5, 10)这类代码创建对象时,这个新实例就会拥有这两个对应尺寸的矩阵,完全满足你“构造包含两个二维矩阵的对象”的需求。
小建议
- 如果你后续需要给矩阵填充数据(比如读取用户评分、计算相似度),可以在类中添加对应的操作方法,比如
setUserRating(int userId, int movieId, int rating)或者calculateUserSimilarities() - 无参构造方法中初始化了1×1的矩阵,如果你的业务场景不需要默认的最小尺寸矩阵,可以考虑移除这个无参构造,或者在注释中明确它的适用场景
public class Cfiltering { private int userMovieMatrix[][]; private float userUserMatrix[][]; public Cfiltering() { userMovieMatrix = new int[1][1]; userUserMatrix = new float[1][1]; } /** * Constructs an object which contains two 2d matrices, one of size * users*movies which will store integer movie ratings and one of size * users*users which will store float similarity scores between pairs of * users. * * @param numberOfUsers Determines size of matrix variables. * @param numberOfMovies Determines size of matrix variables. */ public Cfiltering(int numberOfUsers, int numberOfMovies) { // this is a 2d matrix of size users*movies userMovieMatrix = new int [numberOfUsers][numberOfMovies]; // this is a 2d matrix of size users*users userUserMatrix = new float [numberOfUsers][numberOfUsers]; } }
内容的提问来源于stack exchange,提问作者Hasanul Banna
相关产品推荐
相关产品推荐

