您需要覆盖
equals(Object)。而不是这样做,您实现了一个
equals带有signature
的方法
equals(Subclass)。因此,您
HashSet使用的是为相等性测试
equals(Object)定义的默认方法
Object。
默认
equals(Object)实现基于对象标识,因此,该集合“允许”您添加两个
String在语义上相等的不同对象。

您需要覆盖
equals(Object)。而不是这样做,您实现了一个
equals带有signature
equals(Subclass)。因此,您
HashSet使用的是为相等性测试
equals(Object)定义的默认方法
Object。
默认
equals(Object)实现基于对象标识,因此,该集合“允许”您添加两个
String在语义上相等的不同对象。