我有一个
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()
?
答案 0 :(得分:2)
只需使用HashMap
也使用重写的equals()
和hashcode()
方法进行比较。使用路径(或任何一个基于您的逻辑)作为键,资源作为值。
使用Map#containsKey()
检查现有资源。