package 案例;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
class student{
private String id;
private String name;
public student(String id,String name) {
this.id = id;
this.name = name;
}
public String toString() {
return "学号:"+id+"姓名:"+name;
}
public int hashCode() {
return id.hashCode();
}
public boolean equals(Object object) {
if(this == object) { return true;
}
if(!(object instanceof student)){
return false;
}
student student = (student)object;
boolean b = this.id.equals(student.id);
return b;
}
}
public class text321 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
List list = new ArrayList();
for(int x = 4 ;x>0;x--){
String idString;
String nameString;
System.out.println("输入ID:");
idString = scanner.next();System.out.println("输入姓名:");
nameString = scanner.next();
student student = new student(idString, nameString);
list.add(student);
}
Iterator iterator = list.iterator();
while(iterator.hasNext()) {
Object object = iterator.next();
System.out.println(object);
}
}
}
我上面的代码已经对student类中的hashCode方法和equals进行了重写,我完成连续声明对象的操作,它为什么不排除相同id的结果,还是加入到了list集合中?
对于循环声明对象,它和单独声明对象效果是一样的,为什么我这声明的同时不排除相同id的对象?