4

解決済みの多次元配列の投稿が多数ありますが、for ループを使用して作成しようとすると問題が発生します。

これは、私がやろうとしているコードのコード スニペットです。

//Get a list of Person objects using a method
ArrayList<Person> people = getPeopleList();

//Create an array of 10 Objects with 4 values each
Object[][] data = new Object[10][4];

int count =1;
for(Person p: people)
{
    //This wont compile. This line is trying to add each Object data with values
    data[count-1][count-1] = {count, p.getName(), p.getAge(), p.getNationality()};
    count++;
}

//I then can add this data to my JTable..

for ループを使用してこの多次元配列を作成する方法を教えてください。Person 多次元配列は必要ありません。オブジェクトの多次元配列である必要がありますか? ありがとう

4

3 に答える 3

9

さて、あなたはこれを行うことができます:

//Get a list of Person objects using a method
ArrayList<Person> people = getPeopleList();
Object[][] data = new Object[people.size()][];

for(int i = 0; i < people.size(); i++)
{
    Person p = people.get(i);
    data[i] = new Object[] { i, p.getName(), p.getAge(), p.getNationality() };
}

それは機能しますが、非常に醜いです。もし私があなたなら、Swing があなたのPersonクラスをよりよく「理解」できるようにすることを検討し、 をまったく要求しないようにObject[][]します。

于 2013-05-06T14:00:55.890 に答える
2

Person の各要素を通過するネストされた for ループが必要です。配列の 1 つの場所を無効な値に設定しているため、現在のコードはコンパイルされません。または、Person で配列を返すメソッドを作成し、Person 配列を使用して 1 次元配列の値を設定することもできます。

于 2013-05-06T14:04:21.610 に答える
2

dataですObject[][]。です。data[count - 1] _ Object[]そして、data[count - 1][count - 1]ですObject。Jon Skeet の回答を見て、次にhttp://docs.oracle.com/javase/7/docs/api/javax/swing/table/TableModel.htmlTableModelに記載されているインターフェイス を見てください。次に、そこからリンクされている Java チュートリアルを見てください。

people現在行っているように、変数を取得して別のタイプのオブジェクトに変換する必要はありません。

于 2013-05-06T14:06:18.897 に答える