我想知道是否有一种方法可以检查我的新实例是否已经创建并添加到我的Java实例中... 喜欢;
Instance instance = new Instance(i, vals);
if(instances.contains(instance) == false) { //or hasInstance maybe
instances.add(instance);
}
答案 0 :(得分:0)
我理解,您希望两个对象x1
和x2
与x1.equals(x2)
x1是同一个实例(x1 == x2
)。
需要做这样的事情:
private Map<Instance, Instance> identityMap = new HashMap<>();
public Instance unique(Instance instance) {
Instance first = identityMap.get(instance);
if (first == null) {
first = instance;
identityMap.put(instance, instance);
}
return first;
}
Instance instance = new Instance(i, vals);
instance = unique(instance);
原因是,您希望维护第一个实例,供所有人使用。
顺便说一下 - 用于其他目的:
Set<Instance> instances = ...;
而不是
if (!instances.contains(instance)) { // if not instances contains
可以使用像
这样的代码if (instances.add(instance)) {
// Added, hence new...
} else {
// Not added, hence already existing...
}