equals 已經(jīng)重寫了(自動(dòng)重寫的),第一次返回了true,但創(chuàng)建新對(duì)象后,所有課程都是返回的false,求解?
package imooc_collection;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class SetTest {
public List<Course>coursesToSelect;
private Scanner console;
public SetTest(){
coursesToSelect=new ArrayList<Course>();
console=new Scanner(System.in);
}
public void TestAdd()
{
Course cr1 =new Course("1","數(shù)據(jù)結(jié)構(gòu)");
coursesToSelect.add(cr1);
Course temp=(Course) coursesToSelect.get(0);
//System.out.println("添加課程"+temp.id+":"+temp.name);
Course cr2 =new Course("2","c語言");
coursesToSelect.add(0, cr2);
Course temp2=(Course) coursesToSelect.get(0);
//System.out.println("添加課程"+temp2.id+":"+temp2.name);
// coursesToSelect.add(cr1);
// Course temp0=(Course) coursesToSelect.get(2);
// System.out.println("添加課程"+temp0.id+":"+temp0.name);
//
// Course cr3 =new Course("3","語言");
// coursesToSelect.add(3, cr3);
// Course temp3=(Course) coursesToSelect.get(0);
// System.out.println("添加課程"+temp3.id+":"+temp3.name);
Course [] course={new Course("3","離散數(shù)學(xué)"),new Course("4","大學(xué)英語")};
coursesToSelect.addAll(Arrays.asList(course));
Course temp3=(Course) coursesToSelect.get(2);
Course temp4=(Course) coursesToSelect.get(3);
//System.out.println("添加課程"+temp3.id+":"+temp3.name+"\n"+temp4.id+":"+temp.name);
Course [] course2={new Course("5","數(shù)學(xué)"),new Course("6","結(jié)構(gòu)")};
coursesToSelect.addAll(2, Arrays.asList(course2));
Course temp5=(Course) coursesToSelect.get(2);
Course temp6=(Course) coursesToSelect.get(3);
//System.out.println("添加課程"+temp5.id+":"+temp5.name+"\n"+temp6.id+":"+temp6.name);
}
/**
*?
*通過foreach?
* @param args
*/
public void TestForeach(){
for(Object obj:coursesToSelect){
System.out.println("有如下待選課程foreach");
Course cr=(Course) obj;
System.out.println("待選課程"+cr.id+":"+cr.name);
}
}
/**
* 測(cè)試List的contains 方法
* @param args
*/
public void testListContains(){
//取得0個(gè)元素的課程
Course course=coursesToSelect.get(0);
System.out.println("取得課程"+course.name);
System.out.println("是否包含"+course.name+","+coursesToSelect.contains(course));
//創(chuàng)建新的對(duì)象
System.out.println("輸入課程名稱");
String name=console.next();
Course course2=new Course();
course2.name=name;
System.out.println("創(chuàng)建新的課程"+course2.name);
System.out.println("是否包含"+course2.name+","+coursesToSelect.contains(course2));
}
public static void main(String[] args) {
// TODO Auto-generated method stub
SetTest t1=new SetTest();
t1.TestAdd();
t1.testListContains();
//t1.TestForeach();
//學(xué)生選課
// Student student=new Student("1","小明");
// System.out.println("歡迎"+student.name+"選課");
// Scanner console=new Scanner(System.in);
//
//
// for(int i=0;i<3;i++){
// System.out.println("輸入要選課的id");
// String courseId=console.next();
// for (Course cr : t1.coursesToSelect) {
// if(cr.id.equals(courseId)){
// student.courses.add(cr);
// /**
// * 重復(fù)添加無意義
// */
// //student.courses.add(cr);
// //student.courses.add(null);
//
// ??
// }
//
// }
// }
// t1.testForEachSet(student);
}
public void testForEachSet(Student student)
{
System.out.println("選了多少課程"+student.courses.size());
for (Course cr : student.courses) {
System.out.println("選了什么課程"+cr.id+":"+cr.name);
}
}
}
2018-08-11
course2.id = "2";
2018-07-22
找到原因了,這里我們調(diào)用自動(dòng)重寫的話,因?yàn)槲覀冞@里只是通過name進(jìn)行比較,所以不能把equals中的id也加進(jìn)去。