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