我想知道是否有一种很好的方法可以在对象上设置Set,但是会限制在自定义字段上。
例如,我需要Set
POJO:
class MyPojo {
private String name;
private Map<Object, Object> stuff;
//getters, setters, constructor
}
我希望Set
有一个hash
,这些名称将是唯一的。
我可以基于equals
属性实现name
和equals
,但之后我无法使用{{1}}来比较它们。
是否有一些不错的解决方法或者可能是Guava / apache commons集合?
答案 0 :(得分:4)
您可以创建包装器对象。它就像一个装饰模式。使用不同的哈希实现包装原始对象,然后将在Set中使用包装对象。
答案 1 :(得分:2)
您可以使用HashMap<String,MyPojo>
代替Set<MyPojo>
。这样,name
每个Map
最多只能出现一次。