java.util.Set,但在字段上使用自定义约束

时间:2015-02-19 10:19:11

标签: java collections

我想知道是否有一种很好的方法可以在对象上设置Set,但是会限制在自定义字段上。

例如,我需要Set POJO:

class MyPojo {
  private String name;
  private Map<Object, Object> stuff;
  //getters, setters, constructor
}

我希望Set有一个hash,这些名称将是唯一的。 我可以基于equals属性实现nameequals,但之后我无法使用{{1}}来比较它们。

是否有一些不错的解决方法或者可能是Guava / apache commons集合?

2 个答案:

答案 0 :(得分:4)

您可以创建包装器对象。它就像一个装饰模式。使用不同的哈希实现包装原始对象,然后将在Set中使用包装对象。

答案 1 :(得分:2)

您可以使用HashMap<String,MyPojo>代替Set<MyPojo>。这样,name每个Map最多只能出现一次。