慕函数6377037
qq_慕丝4346553
小志冲冲冲
// @Override
// public int hashCode() {
// final int prime=31;
// int result=1;
// result=prime*result+((name==null)?0:name.hashCode());
// return result;
// }
// @Override
// public boolean equals(Object obj) {
// if (this == obj) {
// return true;
// }
// if (obj == null)
// return false;
// if (!(obj instanceof Course))
// return false;
// Course course = (Course) obj;
// if (this.name == null) {
// if (course.name == null)
// return true;
// else
// return false;
//
// }else{
// if (this.name.equals(course.name))
// return true;
// else
// return false;
//
// }
//
////}
//
// }
//}
黑拉拉的黑企鹅
比较的是两个课程的 对象是否相等。调用的是课程的比较方法。当然是写在课程里
180416
qq_慕莱坞0003151
qq_慕虎6321845
用CourseToSelect的意思是在List集合里用contains方法,
用student.courses的意思是在Set集合里用contains方法
就是一个测试,让你知道两个里面都可以用contains,其实你全部换成一样的也能运行,不过就是在List集合中用了两个contains方法,或是在Set集合中用了两个contains方法。
一样一个的意思就是分别在Set和List集合中演示contains方法
奶尤糯米团子
慕侠3382504
毕竟是免费的
慕虎9475097
解决了, ArrayList没有实例化,
qq_说散就散_0
他直接将Student设置为了该类的Student类型的成员变量student
七分半烟
我也遇到了类似的情况。只不过我是修改了Scanner的位置解决的
goodY
哭爹喊娘学Java
其实也可以,但是在testSetContains方法里有这么一句
System.out.println("备选课程中是否包含课程:" + course2.name + ", " +
student.courses.contains(course2));
所以要把student作为SetList类的一个属性,不然退出了createStudentAndSelectCours方法后student对象就不存在了,你在testSetContains方法里也就访问不到
礼X
因为你是在createStudentAndSelectCours()方法里对学生选课的,在testSetContains()方法里再实例化一个对象出来,也不是选了课的那个,除非你想办法比如用返回值传参数之类的再传入testSetContains()方法,而将student变为属性就可以直接在createStudentAndSelectCours()方法和testSetContains()方法都能访问student属性,而且是同一个student
礼X
这个student就是已经实例化的对象,应该是在前面实例化过了,因为类的名称开头都是大写字母,小写字母开头就是对象名
慕圣3391354
student.courses.contains(course2) 应该改为 coursesToSelect.contains(course2)
fsnh
谢谢解答,本人太粗心了
HYi12
在每个类中,在重写 equals 方法的时侯,一定要重写 hashcode 方法。如果不这样做,你的类违反了hashCode的通用约定,这会阻止它在HashMap和HashSet这样的集合中正常工作。因为你之前已经重写过equals方法,所以就并不是说没变其内部的代码
慕前端6341807
如果不用泛型规定,那默认泛型是Object对象,根据java多态的特性,如果子类重写方法,那调用时方法是子类的方法。
希望对你有帮助
慕田峪7077931
从你给出的代码 没有什么问题。。如果是报NullPointerException的错误是很有可能你在实例化student的时候没有给student的courses初始化。。。你看一下你的courses有没有被初始化
鹿目圆Madoka
我也是同样的问题,不知道重写了equals和hascode为啥结果还是false
qq_慕粉909474
你是不是Hashcode里面选个ID跟name 只要选name就好了
Ibuki_suga
补充下,你可以自己去自定义快捷键...
还有一个,刚才说的第一点,可能我前面理解有错,如果你是指当前窗口的最大化与还原,那快捷键是ctrl + m
慕无忌8377531
是指当前对象的引用,与obj的引用指向同一个对象,地址是一样的。我这么认为哈
你的羊
这个注释掉,然后
这里这样写,就可以啦
qq_Takeiteasy_2
慕姐4925769
CDH_辉
只看这个类,没办法解决问题啊。据我看你的这个异常信息,大概是非法参数异常。你的方法需要什么类型的参数?
信息提示你是在调用add方法时出现的问题,在本类中找不到错误,就应该顺藤摸瓜找到方法定义处继续找。
阿Dine
是不是还需要改写hashcode()方法 让他们返回值一致呢?