gpt4 book ai didi

java - 使用什么数据结构(在 JAVA 中)与随机顺序的 3 组键

转载 作者:行者123 更新时间:2023-11-30 07:53:35 25 4
gpt4 key购买 nike

我有 3 组键:一组是类型,另一组是子类型,最后一组是 ID,值是 ProductObj。最初,我想将 ProductObj 存储在 HashMap 的 HashMap 的 HashMap ( HashMap<type, HashMap<subtype, HashMap<ID, prodObj>>> ) 中以进行更快的搜索(想将其设计为缓存而不是继续从数据库中检索)。 [注意:# of productObj 是固定的] 然而,我了解到 50% 的时间,我可能只得到 ID 而不是类型/子类型,另外 50% 的时间是类型/子类型但没有 ID。适合这种目的的良好数据结构是什么?

我想到了HashMap<type, HashMap<subtype, HashMap<ID, uuid>>>和另一个 HashMap<uuid, prodObj> ,但我希望在数据结构方面找到更好的解决方案。提前致谢!

[附加信息]

这就是希望存储的{type=1 subtype=1 id=1=prodObj1, type=1 subtype=1 id=2=prodObj2,...}

当给出 id 时:例如id=1,则返回prodObj1

当给出类型时:例如type=1,返回prodObj1和prodObj2

当给出类型和子类型时:例如type=1 subtype=1,返回prodObj1和prodObj2

当给出类型、子类型和 id 时:例如type=1 subtype=1 id=1,则返回prodObj1

我希望利用类似 HashMap 的数据结构来基于键值进行更快的搜索,因为我会经常访问缓存并更改 prodObj 状态。

最佳答案

为什么要使用嵌套 map ?

如果您不在 map 中操作大量值,则可以使用定义复合键(类型、子类型和 ID)的自定义类作为键。

这样,您可以在获取或输入时将此复合键的实例传递给您的 map 。

public class ProductKey{

private Long id;
private string type;
private string subType;

private ProductKey(){
}

public static ProductKey ofWithId(Long id){
ProductKey productKey = new ProductKey();
productKey.id = id;
return productKey;
}
...
// other factory methods
...
// equals and hashcode overriden of course
}

您可以用这种方式实例化和填充您的 map :

Map<ProductKey, ProductObj> map = new HashMap<>();
map.put(ProductKey.ofWithId(1), myProductObj);
map.put(ProductKey.ofWithTypeAndSubType("type", "subtype"), anotherProductObj);
...

并以这种方式检索元素:

 ProductObj retrievedObj = map.get(ProductKey.ofWithId(1));

关于java - 使用什么数据结构(在 JAVA 中)与随机顺序的 3 组键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44657647/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com