Java / Weka - 需要创建唯一的实例

时间:2014-05-26 21:11:04

标签: java weka

我想知道是否有一种方法可以检查我的新实例是否已经创建并添加到我的Java实例中... 喜欢;

Instance instance = new Instance(i, vals);
if(instances.contains(instance) == false) { //or hasInstance maybe
    instances.add(instance);
}

1 个答案:

答案 0 :(得分:0)

我理解,您希望两个对象x1x2x1.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...
}