【问题标题】:How to set array dimension to long number如何将数组维度设置为长数
【发布时间】:2014-03-19 09:47:47
【问题描述】:

我在 Java 中创建了一个 jtable,它从数据库表中获取其内容。由于数据库表的主键已设置为 bigint 数据类型 (SQL Server 2008),因此行数可能会超过 Java 中 int 数据类型的容量。

我想做的是创建一个二维数组,该数组将保存n 的数据行,其中n 的数据类型为long。这个数据数组将被传递给 jtable 的模型。我试图在不提供行号和仅提供列号的情况下声明数组对象,但它给出了语法错误。可能是我在声明方法上犯了一个错误。如果有任何这种类型声明的方法,请告诉我语法,如果没有,请告诉我解决方法。该数组包含 Object 类型的数据(即它是一个 Object[] 数组)。

【问题讨论】:

  • 能否提供你试过的代码。这将 A) 帮助人们充分理解要求,并且 B) 确保所提供的答案符合您的要求。
  • @Edd 你的回答怎么没有解决问题? OP 想要的那是不可能的。
  • @Christopher 当我编辑问题时,我重新阅读了它,我对它的理解从“我如何拥有n 元素数组,其中n > Integer.MAX_VALUE”变成了更像“我希望能够存储比array 更多的元素;我怎样才能让我的 jlist-y 东西来处理某种形式的二维数组”。我尽量不在我的编辑中提出一种或另一种解释。如果有用,我可能会取消删除我的答案。

标签: java arrays multidimensional-array


【解决方案1】:

根据数组访问表达式的Java Language Specification 部分:

索引表达式经过一元数字提升 (§5.6.1)。提升的类型必须是 int,或发生编译时错误。

Another answer on Stackoverflow 确认不可能有比int 提供的更多插槽。

【讨论】:

  • 确实回答了这个问题。当 Java 文档明确指出 Array 可以采用的最大尺寸是 Integer.MAX_VALUE 时,OP 想知道他们是否可以指定尺寸为 long 的数组。也许基于对象的解决方案可能有效,但除此之外我不确定。
【解决方案2】:

您不能将数组的大小设置为大于Integer.MAX_VALUEjava specs 有以下说法:

数组必须由 int 值索引; short、byte 或 char 值也可以用作索引值,因为它们经过一元数字提升(第 5.6.1 节)并成为 int 值。

尝试访问具有长索引值的数组组件会导致编译时错误。

因此,您不能创建大小大于整数最大值的数组。为什么我不知道,但我的猜测是它与优化有关。所以看来你必须使用ArrayList

猜你喜欢
  • 1970-01-01
  • 2013-11-11
  • 1970-01-01
  • 2022-01-17
  • 2014-07-01
  • 2015-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多