java.util.Set,但对字段有自定义约束

java.util.Set, but with custom constraint on field

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

例如我需要一个 Set 的 POJO:

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

我想要一个 Set,它们的名称将是唯一的。 我可以基于 name 属性 实现 hashequals,但是我不能真正使用 equals 来比较它们。

是否有一些不错的解决方法或者 Guava/apache commons collection for this?

您可以使用 HashMap<String,MyPojo> 而不是 Set<MyPojo>。这样,每个 nameMap.

中最多出现一次

您可以创建包装器对象。这就像一个装饰者模式。你用不同的散列实现包装你的原始对象,然后包装的对象将在集合中使用。