1

我有返回 (x,y,z) 元组的 SQL 请求:

  • x 介于 1 和 9 之间
  • y 在 1 到 500 之间
  • z 介于 1 和 15 之间

因此,如果我所有的 67500 种可能性都存储到数据库中,那么我有 9 * 500 * 15 = 最大 67500 种可能性和最小 0 种可能性。

例如,我的列表中可以有 (4, 256, 1),但不能有 (3, 410, 8)。

我想生成 3 个链表。例如,如果我选择x=2我希望第二个列表显示此 x 值的所有可用 y,并使用 y 选项显示 z 值的同上。

我应该使用 Collection ar Array 轻松检索值以生成 mys 列表吗?

4

5 回答 5

3

我认为当数据的大小不是恒定的(或)提前知道时,使用集合 API 总是好的。

如果需要,您可以使用数组并执行此操作arrayCopy,但这将是重新发明循环的事情。

于 2012-12-11T21:39:50.037 回答
2

通常,仅在绝对需要时才使用数组(例如不在此处)。

你会找到 Map<Integer, List<Integer>>一个很好的起点。

于 2012-12-11T21:44:16.760 回答
1

如果您的元素“列表”是恒定的,则应该使用数组。通过 JDBC API 查询,您将知道查询将返回多少行。

于 2012-12-11T21:45:39.620 回答
1

由于键落在这样的小范围内,一个简单的shorts 二维数组就足够了:

short data[10][500];

第一个索引是 的值x;第二个指标是 的值y

的值z存储为shortat的各个位[x][y]。要访问单个位,请使用位操作:

if ((data[x][y] & (1 << z)) != 0) // The element at x,y,x is present
    ...
data[x][y] != (1 << z); // Add an element at x,y,z
data[x][y] &= ~(1 << z); // Remove the element at x,y,z

这种数据结构在空间上非常有效:它需要大约 10KBytes 的内存来存储整个数据集。

于 2012-12-11T21:46:56.240 回答
0

例如,如果我选择 x=2,我希望第二个列表显示此 x 值的所有可用 y,以及带有 y 选择的 z 值的同上。

如果您需要快速检索,您可能应该查看Map

于 2012-12-11T21:42:20.100 回答