Collection.contains() - >得到这个项目

时间:2014-05-21 20:43:19

标签: java collections set

我有一个

Set<Resource> res = new HashSet<>();

资源会根据资源路径覆盖equals()hashcode()

现在我想注册一个新资源,(如果还没有加载,加载它):

Resource loadResource(String path) {

    // prepare a resource
    Resource newRes = new Resource(path);

    if(res.contains(newRes)) {
        // return that one
    }

    // load it (expensive)
    newRes.load();

    res.add(newRes);

    return newRes;
}

现在问题 - 如何做“归还那个”部分? 比for循环更好的方式并检查每个资源是否匹配equals()

1 个答案:

答案 0 :(得分:2)

只需使用HashMap也使用重写的equals()hashcode()方法进行比较。使用路径(或任何一个基于您的逻辑)作为键,资源作为值。

使用Map#containsKey()检查现有资源。