麻煩大家?guī)兔纯矗瑃hx!!!
//這是測試方法 public?void?testContains(){ ????????Course?course?=?courseToSelect.get(0); ????????System.out.println("取得備選課程:"+course.name); ????????System.out.println("備選課程中是否包含本課程:"+course.name+",?"+courseToSelect.contains(course)); ????????Course?course2?=?new?Course(course.id,course.name); ????????System.out.println("新建課程:"+course2.name); ????????System.out.println("備選課程中是否包含本課程:"+course2.name+",?"+courseToSelect.contains(course2));???????? ????????System.out.println("請輸入要查詢的課程名稱:"); ????????String?name?=?sc.next(); ????????Course?course3?=?new?Course(); ????????course3.name?=?name; ????????System.out.println("備選課程中是否包含本課程:"+course3.name+",?"+courseToSelect.contains(course3));????? ????}? ???? //這是Course類里面重寫的equals方法 @Override ????public?boolean?equals(Object?obj)?{ ????????if?(this?==?obj) ????????????return?true; ????????if?(obj?==?null) ????????????return?false; ????????if(!(obj?instanceof?Course)) ????????????return?false; ????????Course?other?=?(Course)?obj; ????????if?(this.id?==?null)?{ ????????????if?(other.id?!=?null) ????????????????return?false; ????????}?else?if?(!id.equals(other.id)) ????????????return?false; ????????if?(this.name?==?null)?{ ????????????if?(other.name?!=?null) ????????????????return?false; ????????}?else?if?(!this.name.equals(other.name)) ????????????return?false; ????????return?true; ????}
這里為什么會是false呢?
2015-03-08
我的equals方法里多了對id的判斷,而當用戶只輸入課程名稱時,id是為null,然而根據課程名稱從list中查找時id不為空,所以調用equals方法時返回的是false.··這樣想是對的吧?