我想知道是否有一种很好的方法可以在对象上设置Set,但在自定义字段上进行约束。
例如,我需要POJO的Set
:
class MyPojo {
private String name;
private Map<Object, Object> stuff;
//getters, setters, constructor
}
我想要一个Set
,在那里它们的名字是唯一的。我可以基于name
属性来实现hash
和equals
,但我不能真正使用equals
来比较它们。
是否有一些不错的变通方法,或者Guava/apache-commons集合?
您可以创建包装器对象。这就像一个装饰图案。您用不同的散列实现包装您的原始对象,然后包装的对象将在集合中使用。
您可以使用HashMap<String,MyPojo>
而不是Set<MyPojo>
。这样,每个name
在Map
中最多可以出现一次。