当前位置: 首页 > 知识库问答 >
问题:

Java数据结构,用于任意数量且大于整数的元素。MAX_VALUE

方祺
2023-03-14

有没有一种java数据结构可以存储任意数量的元素?为了简单起见,我们假设元素也是大整数。

从理论上讲,使用带有 BigInteger 索引的数组是可以的,因为设置和获取值将是唯一需要的操作。但是数组不能包含超过 Integer.MAX_VALUE。(甚至更少,具体取决于 VM 依赖者,请参阅此问题)。

要实现这样的数据结构,一个简单的(天真的)解决方案是从LinkedList创建一个数据结构,并具有一个外部BigInteger计数器。

大概是这样的:

class MyArray{

   private final BigInteger size;
   private final LinkedList<BigInteger> list;

   MyArray(BigInteger size){
      //ommited for simplicity
   }

   public BigInteger get(BigInteger index){
      //ommited for simplicity
      //traverse the LinkedList using a BigInteger counter and get the element
   }

   public void set(BigInteger index,BigInteger element){
       //ommited for simplicity. 
      //traverse the LinkedList using a BigInteger counter and set the element
   }

   public BigInteger getSize(){
       return size;
   }

}

但是,应该可以进行一些优化。例如,不初始化尚未设置或获取的元素,或缓存频繁请求的元素。从这个意义上说,Map 实现也可能是一个很好的实现。但是地图返回一个整数大小,我找不到关于地图是否可以处理超过 Integer.MAX_VALUE 的参考。我搜索了TreeMap和HashMap。有没有这种任意大小的数据结构可用?

其他一些限制。1-内存大小不受限制,但节省内存是一个优点。2-数据结构最好存储在内存中,因此不考虑数据库支持的解决方案。例如,也可以通过将值保存在数据库中,将元素的索引转换为String并用作String键来实现上述操作。

共有1个答案

利博远
2023-03-14

这个问题背后的动机是确定一个简单的解决方案,而不依赖于内存数据库中。例如,当 64 位数组是一个很好的解决方案时。内存数据库提供了更多可能不需要的功能,也许可以避免。

没有任何答案,我自己也没有找到一个容易实现且高效的解决方案,我认为使用内存数据库是最简单的方法。在维基百科中可以找到内存数据库的列表。

 类似资料:
  • 本文向大家介绍从数据结构中的最大HBLT中删除任意元素,包括了从数据结构中的最大HBLT中删除任意元素的使用技巧和注意事项,需要的朋友参考一下 从“最大”或“最小” HBLT中删除任意节点不是标准操作。优先队列或HBLT。如果要从HBLT中删除一个节点,例如K,则必须遵循以下规则。 从树上分离以K为根的子树,并将其替换为节点K子树的融合体。 从K到根的路径更新s的值,并根据需要交换此路径上的子树以

  • 问题内容: 我需要存储一个2d矩阵,其中包含邮政编码以及每个邮政编码之间的距离(以km为单位)。我的客户有一个计算距离的应用程序,然后将其存储在Excel文件中。目前,有952个地方。因此,矩阵将具有952x952 = 906304条目。 我试图将其映射到HashMap [Integer,Float]。整数是两个字符串在两个位置(例如“ A”和“ B”)的哈希码。浮点值是它们之间的距离(以公里为单

  • 如何实现以下函数都在O(log N)中的数据结构? 插入(x)-将整数添加到集合 成员(x)-检查集合是否包含整数x 删除(x)-从集合中删除整数x deleteLessThan(x)删除所有等于或小于k的数字 我唯一能想到的就是使用某种平衡的BST来获取插入、成员和删除的O(logn)。 deleteLessthan()函数看起来像这样:找到大于k的最小元素,删除它的左子树,然后重新平衡。但是,

  • 问题内容: 前言:前几天,我在考虑为新应用程序使用新的数据库结构,并意识到我们需要一种有效地存储历史数据的方法。我想让其他人看一看,看看这种结构是否有任何问题。我意识到这种存储数据的方法很可能以前就已经发明了(我几乎可以肯定已经有了),但是我不知道它是否有名称,并且我尝试过的一些Google搜索都没有产生任何结果。 问题:假设您有一个订单表,并且订单与下订单的客户的客户表相关。在正常的数据库结构中

  • 问题内容: 我有一些想要添加到ArrayList中的值,以跟踪显示的数字。这些值是整数,因此我创建了一个ArrayList; 但是我无法使用此方法将任何东西添加到ArrayList中。如果我使用Strings作为数组列表,它将起作用。我必须将其设置为String数组,然后以某种方式将其转换为整数吗? 编辑:我还有另一个问题。我希望列表仅包含3个值。我该怎么办? 问题答案: 的清单。

  • 我试图在我的Java项目中找到一个数据结构。我试图做的是从一组数字中获得低于任意数字的下一个最大值,或者如果不存在这样的数字,则得到通知。 例1)我的任意数字是7.0。{3.1, 6.0, 7.13131313, 8.0}我需要从这个集合中得到的数字是6.0。 例2)我的任意数字是1.0。{2.0, 3.5555, 999.0}集合中不存在下一个最高的数字,所以我需要知道它不存在。 我能想到的最好