gpt4 book ai didi

java - 存储项目到项目关联的算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:03:06 24 4
gpt4 key购买 nike

我需要一些帮助来有效地存储一些数据。我有一个很大的对象列表(大约 100.000)并且想用一个系数存储这些项目之间的关联。并非所有项目都是关联的,事实上我有一些关于 1 Mio 的东西。协会。在引用这两个项目时,我需要快速访问这些关联。我所做的是这样的结构:

Map<Item, Map<Item, Float>>

我用 HashMapHashtable 试过了。两者都工作正常并且速度足够快。我的问题是,所有这些 map 都会在内存中产生大量开销,对于给定的场景,具体超过 300 MB。是否有占地面积较小的 Map-Implementation?是否有更好的算法来存储此类数据?

最佳答案

这里有一些想法:

  1. 存储在 Map<Pair<Item,Item>,Float> 中.如果您担心分配新的 Pair对于每个查找,并且您的代码是同步的,您可以保留一个查找对实例。

  2. 松开外层 map 为Map<Item, ?> .该值可以是一个简单的 {Item,Float}第一个关联的元组,少量关联的小元组数组,然后提升为完整的 Map。

  3. 使用 Commons Collections' Flat3Map 用于内部 map 。

  4. 如果您严格控制 Items,并且 Item 等价是引用(即每个 Item 实例不是 equal 到任何其他 Item 实例,那么您可以为每个实例编号。既然您在谈论 < 20 亿个实例,单个 Long 将表示具有一些位操作的 Item 对。然后如果使用 Trove 的 TLongObjectHashMap , map 会变得更小

关于java - 存储项目到项目关联的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6878935/

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