【发布时间】:2020-06-29 16:48:45
【问题描述】:
我有一个数据对象类:
public class MyDataObject {
private String value;
private String text;
private Set<MyDataObject> child;
// Getter & setters
// Constructor
public MyDataObject(final String value, final String text) {
this.value = value;
this.text = text;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
MyDataObject that = (MyDataObject) o;
return value.equals(that.value) &&
text.equals(that.text) &&
Objects.equals(child, that.child);
}
@Override
public int hashCode() {
return Objects.hash(value, text, child);
}
}
我在我的 MyDataObject 对象之一中添加了 2 个子元素。
说:
MyDataObject myDataObject = new MyDataObject("USA", "United States");
Set<MyDataObject> childSet = new TreeSet<>(Comparator.comparing(MyDataObject::getText));
childSet.add(new MyDataObject("NY", "Bronx")); // This is added
childSet.add(new MyDataObject("NY", "Manhattan")); // This is not being added, returing false.
myDataObject.setChild(childSet);
我也重写了 hashcode 和 equals 方法以考虑子元素。
我错过了什么?
【问题讨论】:
-
childSet.add("NY", "Bronx");这是无效的,应该是childSet.add(new MyDataObject("NY", "Bronx"))我无法重现你的问题 -
@Eklavya,很抱歉有错别字。我是手动输入的。问题已更新。
-
我无法重现您的问题onlinegdb.com/S1jloiDC8
标签: java collections set