2

データベースから返されたデータを含む String[] のリストがあります

List<String[]> x;

ここで、「x」ごとに、その相対 Y を保存する必要があります。(「x」には「SELECT DISTINCT xColumn1, xColumn2 FROM table」から返された要素が含まれており、要素ごとに別のクエリからのデータを格納する必要があると想像してください)。

Y の要素はここに格納されます。

List<List<String[]>> yElements;

固定長リストを宣言できると読みましたが、方法がわかりません。これは私がやったことです:

yElements = Arrays.asList(new List<String[]>[x.sixe()]);

Netbeans から「汎用配列作成」エラーが表示されました。

また、このリストのリストの特定のインデックスに String[ ] のリストを格納するには、固定長のリストが必要であることも伝えたいと思います。(配列の扱い方を教えていただければ、それも素晴らしいことです!) ありがとうございます。

4

2 に答える 2

0

を使用してジェネリック型の配列のインスタンスを作成することはできませんnew

1つの選択肢はこれです:

import java.lang.reflect.*;
import java.util.*;

public class Test
{
    public static void main( String args[] )
    {
        List<String[]> x = ...;
        List<List<String[]>> yElements = Arrays.asList(
                (List<String[]>[])Array.newInstance(List.class, x.size()));
    }
}

関連する質問:Javaでジェネリック配列を作成するにはどうすればよいですか?。(ここにある例は、ジェネリック型パラメーターの配列のインスタンスを作成することに関するものです...しかし、同じアプローチがここに適用されます。)


しかし、この質問全体は誤った仮定に基づいていると思います。

また、このリストのリストの特定のインデックスに文字列のリスト[]を格納するには、固定長のリストが必要であることもお伝えしたいと思います。

固定サイズのリストを用意する必要はありません。計算の観点からは、リスト要素を追加または削除しない限り、コードは固定されていないサイズのリストで問題なく機能します。(実際、配列をラップするために使用しても、要素を追加/削除しようとArrays.asListする他のコードは停止しません...)とにかく...実装タイプを作成するだけで、一般的な配列作成の問題はなくなります。ArrayList<ArrayList<ArrayList<String>>>

x.size()また、のサイズとして使用するのは間違っているのではないかと思いyElementsます。のサイズは、特定のインスタンスのサイズではなく、存在するインスタンスyElementsの数によって決定される可能性があります。xx

于 2012-11-25T02:57:03.073 に答える
0

リストのサイズを完全に固定したい場合は、ネイティブ配列を使用できます。それらは多次元である可能性があるため、たとえば、String[][] xまたは `String [] [] []y'を持つことができます。

ただし、正直なところ、あなたのアプローチは少し混乱していて、デザインの観点からはそれほど鮮明ではありません。

コメントで提案されたのと同様に、両方の列(xColumn1、xColumn2)を持つオブジェクトがあり、次にY要素が別のオブジェクトにあり、最初のオブジェクトに関連付けることができるのはなぜですか?

それで:

class XDetails
{
   String xColumn1;
   String xColumn2;

   YDetails relatedY;
   ...
}

class YDetails
{
   ... fields of Y ...

}

次に、配列またはList<XDetails>

于 2012-11-25T02:58:25.523 に答える