gpt4 book ai didi

java - 如何在 Java 中加载海量数据文件?有比哈希表更好的结构吗?

转载 作者:行者123 更新时间:2023-12-04 05:26:50 25 4
gpt4 key购买 nike

我试图在内存中的哈希表中加载一个 1400 万行的大文件。每行包含三个数字 (n,m,v),其中:

  • n:是用户(对象)的 id
  • m:是项目(对象)的 id
  • v:是用户 n 给予物品 m 的比率。

  • 每个用户 n有一个 hashtable<item, rate>存储用户评价的项目,
    每个项目都有一个 hashtable<user, rate>存储评价此项目的用户。

    在我的机器上,我无法将此结构加载到内存中,因此每次都会出现堆内存错误。

    我试图用 hashBasedTable 替换哈希表,它允许每个值都有两个键,但没有解决方案。另外 hashBasedTable 使我的程序变慢了。

    是否有任何解决方案能够加载如此大量的数据?

    最佳答案

    我建议您使用 ArrayList<User> 表示每个评分项目的用户和每个用户的评分项目。和 ArrayList<Item>分别。这样会节省很多空间。

    诚然,一些操作现在将是 O(N)但这只是一个问题,如果 N变大。 (如果是这样,请考虑混合使用 ArrayList 用于小型关系,HashMap 用于大型关系。)

    建议#2 - 使用普通数组......并保持它们排序,以便您可以使用二进制搜索实现查找。这需要更多的代码(即更复杂),但与使用 Collection 类型相比,它会为您提供更好的内存使用率。

    建议#3 - 使用数据库。它将更好地扩展。

    关于java - 如何在 Java 中加载海量数据文件?有比哈希表更好的结构吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13105882/

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