1

次の (x,y,z) タプルを返す SQL リクエストがあります。

  • ×1~9
  • 1 ~ 500 の y
  • z 1 から 15 の間

したがって、67500 の可能性がすべてデータベースに格納されている場合、最大 9 * 500 * 15 = 67500 の可能性があり、最小の可能性は 0 です。

たとえば、リストに (4, 256, 1) を含めることはできますが、(3, 410, 8) を含めることはできません。

3 つの連結リストを生成したいと考えています。たとえばx=2、2 番目のリストに、この x 値に使用可能なすべての y を表示し、z 値に y を選択した場合は idem を表示することを選択した場合。

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 の 2D 配列で十分です。

short data[10][500];

最初のインデックスは の値ですx。2 番目のインデックスは の値ですy

の値は、 atzの個々のビットとして格納されます。個々のビットにアクセスするには、ビット操作を使用します。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

このデータ構造はスペース効率が非常に高く、データ セット全体を保存するには約 10K バイトのメモリが必要です。

于 2012-12-11T21:46:56.240 に答える
0

たとえば、x=2 を選択した場合、2 番目のリストに、この x 値に対して使用可能なすべての y を表示し、y を選択した z 値に対して idem を表示します。

迅速な検索が必要な場合は、Map

于 2012-12-11T21:42:20.100 に答える