そのように WrappedString を hashSet に追加することの違いを特定するのを手伝ってください:
public class WrappedString {
private String s;
public WrappedString(String s) { this.s = s; }
public static void main(String[] args) {
HashSet<Object> hs = new HashSet<Object>();
WrappedString ws1 = new WrappedString("aardvark");
WrappedString ws2 = new WrappedString("aardvark");
hs.add(ws1); hs.add(ws2);
System.out.println(hs.size()); // outputs 2
}
}
そして以下:
public class WrappedString {
private String s;
public WrappedString(String s) { this.s = s; }
public static void main(String[] args) {
HashSet<Object> hs = new HashSet<Object>();
String s1 = new String("aardvark");
String s2 = new String("aardvark");
hs.add(s1); hs.add(s2);
System.out.println(hs.size()); // outputs 1
}
}
どのオブジェクトも hashSet 内に一度だけ存在し、型の 2 つのインスタンスはWrappedString
同じ値を持っていても異なる変数と見なされることを知っていますが、型 String の 2 つのインスタンスを異なる方法で扱う理由 (2 つの異なるにもかかわらず、1 つのインスタンスのみが格納されます)オブジェクト)?