




Eclipse提供了快捷重写equals与hashCode的方法:在Source工具栏中提供了快捷方法:
package com.test.array;
import java.util.HashSet;
public class HashTest {
public static void main(String[] args) {
HashSet set = new HashSet();
set.add(new Person("lisi"));
set.add(new Person("lisi"));
System.out.println(set);
}
}
class Person{
String name;
public Person(String name){
this.name = name;
}
public int hashCode() {
return this.name.hashCode();
}
public boolean equals(Object obj) {
if(this == obj){
return true;
}
if(obj != null && obj instanceof Person){
Person p = (Person)obj;
if(name.equals(p.name)){
return true;
}
}
return false;
}
}
结果只打印出了一个对象

package com.test.array;
import java.util.HashSet;
import java.util.Iterator;
public class IteratorTest {
public static void main(String[] args) {
HashSet set = new HashSet();
set.add("a");
set.add("b");
set.add("c");
set.add("d");
set.add("e");
Iterator iter = set.iterator();
while(iter.hasNext()){
String value = (String)iter.next();
System.out.println(value);
}
}
}
也可使用for循环迭代
for(Iterator iter = set.iterator();iter.hasNext();){
String value = (String)iter.next();
System.out.println(value);
}
下例中的TreeSet必须要有一个comparator类,才能往里添加Student对象,否则会抛出ClassCastException
package com.test.array;
import java.util.Comparator;
import java.util.TreeSet;
public class TreeSetTest {
public static void main(String[] args) {
TreeSet set = new TreeSet(new StudentComparator());
set.add(new Student(80));
set.add(new Student(90));
set.add(new Student(60));
set.add(new Student(70));
System.out.println(set);
}
}
class Student{
int score;
public Student(int score) {
this.score = score;
}
public String toString() {
return String.valueOf(score);
}
}
class StudentComparator implements Comparator{
//按学生成绩升序
public int compare(Object o1, Object o2) {
Student s1 =(Student)o1;
Student s2 =(Student)o2;
return s1.score - s2.score;
}
}
本文介绍如何在Eclipse中快速重写equals与hashCode方法,并通过实例展示这些方法的作用。此外,还介绍了如何使用HashSet及TreeSet进行集合操作。

被折叠的 条评论
为什么被折叠?



