我有SQL请求返回(x,y,z)元组:
因此,如果我的所有67500种可能性都存储在数据库中,那么我最多可以有9 * 500 * 15 = 67500种可能性和0种可能性。
我可以在我的列表中有(4,256,1),但不能(3,410,8)。
我想生成3个链表。例如,如果我选择x=2
,我希望第二个列表显示此x值的所有可用y和y选择的z值的idem。
我应该使用Collection ar Array来轻松检索值以生成mys列表吗?
答案 0 :(得分:3)
我认为,当数据大小不是常数(或)提前知道时,使用集合API总是好的。
如果需要,您可以使用数组并执行arrayCopy
,但这将重新创建循环。
答案 1 :(得分:2)
一般情况下,只在必要时才使用数组(比如不在这里)。
您会发现Map<Integer, List<Integer>>
是个好地方。
答案 2 :(得分:1)
如果元素的“列表”是常量,则应使用数组。通过JDBC API查询,您将知道查询将返回多少行。
答案 3 :(得分:1)
如果键落在这样的小范围内,那么short
s的简单2D数组就足够了:
short data[10][500];
第一个索引是x
的值;第二个索引是y
的值。
z
的值存储为short
[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
这种数据结构在空间上非常有效:它需要大约10KB的内存来存储整个数据集。
答案 4 :(得分:0)
例如,如果我选择x = 2,我希望第二个列表显示所有 对于此x值,可用y和y选择的z值的idem。
如果您需要快速检索,您应该查看Map