public class Point {
private int x;
private int y;
public Point(int x,int y){
this.x = x;
this.y = y;
}
public String toString(){
return "坐标(x="+this.x+",y="+this.y+")" ;
}
}[/code]然后写一个测试类:[code=java]package org.cxy.collection;
import java.util.*;
public class HashSetDemo {
public static void main(String[] args){
HashSet<Point> hash = new HashSet<Point>();
hash.add(new Point(5,4));
hash.add(new Point(5,4));
hash.add(new Point(1,2));
for(Point p:hash){
System.out.println(p);
}
}
}[/code]执行结果:[code=java]坐标(x=5,y=4)
坐标(x=5,y=4)
坐标(x=1,y=2)[/code]刚才说了,Set接口是可以消除重复元素的,但是程序的执行结果,却存在了相同的元素。这是为什么?
换成String类呢?[code=java]package org.cxy.collection;
import java.util.*;
public class HashSetDemo {
public static void main(String[] args){
HashSet<String> hash = new HashSet<String>();
hash.add("1");
hash.add("1");
hash.add("2");
for(String str:hash){
System.out.println(str);
}
}
}[/code]程序执行的结果:[code=java]2
1[/code]结果居然没有重复元素,这又是为什么?还有,为什么先加入的是“1”,而先输出的元素确实“2”?
咱们一个个的来解决。