1.Set 没有顺序不能重复
以下代码该怎么解释呢?谢谢..
[code="java"]import java.util.*;
import static java.lang.System.out;
class G086
{
String s;
G086(String v)
{
this.s = v;
}
public int hashCode()
{
return 1;
}
public boolean equals(G086 g)
{
if(s.charAt(0)==g.s.charAt(0))
return true;
return false;
}
/*
public String toString()
{
return this.s;
}
*/
public static void main(String[] args)
{
G086 g1 = new G086("aaa");
G086 g2 = new G086("aaa");
String t = "-";
if(g1.equals(g2))
t += "1";
//t += g1.equals(g2);
if(g1==g2)
t += " 2";
Set s1 = new HashSet();
s1.add(g1);
s1.add(g2);
out.println(t+" "+s1.size());
out.println(s1);
}
}[/code]
你这问题我也想了半天了 本来都关机睡觉了 突然想起来 又爬起来 敬业吧
正题:你没覆盖equals方法 真正的equals参数应该是Object你写成自己的类了 呵呵 迷惑啊
你的这个例子很有 迷惑性!! 你覆盖equals方法时,出错了!!应该这样。
[code="java"]
public boolean equals(Object o) {
if (o instanceof G086) {
G086 g = (G086) o;
if (s.charAt(0) == g.s.charAt(0))
return true;
}
return false;
}
[/code]
你再试试 结果就是你想要的了!!