public
class
Test1 {
public
static
void
main(String[] args) {
Set<Student> set =
new
TreeSet<Student>();
addTestData(set);
printData(set);
set =
new
HashSet<Student>();
addTestData(set);
printData(set);
}
public
static
void
addTestData(Set set) {
Student s1 =
new
Student(
"d_name1"
,
30
);
Student s2 =
new
Student(
"a_name2"
,
20
);
Student s3 =
new
Student(
"c_name3"
,
26
);
Student s4 =
new
Student(
"b_name4"
,
24
);
Student s5 =
new
Student(
"c_name1"
,
30
);
Student s6 =
new
Student(
"c_name1"
,
30
);
System.out.println(set.add(s1) ==
true
?
"加入"
:
"重复"
);
System.out.println(set.add(s2) ==
true
?
"加入"
:
"重复"
);
System.out.println(set.add(s3) ==
true
?
"加入"
:
"重复"
);
System.out.println(set.add(s4) ==
true
?
"加入"
:
"重复"
);
System.out.println(set.add(s5) ==
true
?
"加入"
:
"重复"
);
System.out.println(set.add(s6) ==
true
?
"加入"
:
"重复"
);
}
public
static
void
printData(Set set) {
for
(Iterator<Student> iterator = set.iterator(); iterator.hasNext();) {
Student student = iterator.next();
System.out.println(set.getClass().getName() +
" 姓名:"
+ student.name
+
" 年龄:"
+ student.age);
}
}
}
class
Student
implements
Comparable {
int
age;
String name;
Student(String name,
int
age) {
this
.age = age;
this
.name = name;
}
public
boolean
equals(Object obj) {
Student s = (Student) obj;
return
(age == s.age && name.equals(s.name));
}
public
int
hashCode() {
return
age * name.hashCode();
}
public
int
compareTo(Object obj) {
Student stu = (Student) obj;
int
num =
new
Integer(
this
.age).compareTo(
new
Integer(stu.age));
return
num ==
0
?
this
.name.compareTo(stu.name) : num;
}
}