2016-05-03 16 views
0

オブジェクトの配列に値を動的に追加し、その配列変数を関数に渡す必要があります。Java、オブジェクト配列に値を追加するには

値を手動で追加するとうまく動作します。

Object[][] listData = {{"Cheese", "Pepperoni", "Black Olives"},{"Cheese",  
"Pepperoni", "Black Olives"}}; 

これはたlistDataを使用する必要がある機能です。

TableModel tblModel = new DefaultTableModel(new String[]{"Date", "Action", "Amount"}, listData); 

が、どのように私は、forループからたlistDataに値を追加することができますか?

ArrayList<Map<String, Object>> sampleArray = (ArrayList)myPremiumspaid.get("Data"); 
for(int x =0; x<sampleArray.size(); x++) 
{ 
    //sampleArray.get(x).get("YearMonth"); 
    //listData[][] = ""; stuck here 
} 
+0

ここで、配列の値はどこから得られますか? – SomeJavaGuy

+0

Java配列の長さは固定です。 「値を動的に追加する」とはどういう意味ですか? –

+0

'' 'sampleArray'''のタイプは何ですか? –

答えて

2

配列はサイズを固定され、Arrayオブジェクトを作成した後、あなたはそれのサイズを更新することができません/それはサイズだ拡大。 ダイナミックなサイズまたは自動成長する目的はリスト ieを使用する必要があります。 ArrayList。代わりに

Object[][] listData = {{"Cheese", "Pepperoni", "Black Olives"},{"Cheese",  
"Pepperoni", "Black Olives"}}; 

List<List<Object>> listData=new ArrayList<List<Object>>(); 
listData.add(Arrays.asList("Cheese", "Pepperoni", "Black Olives")); 
listData.add(Arrays.asList("Cheese", "Pepperoni", "Black Olives")); 

しかし、このArrayListのは、アレイを取っている関数に渡される必要があるので、あなたはのArrayList配列オブジェクトを変換することができます。

TableModel tblModel = new DefaultTableModel(new String[]{"Date", "Action", "Amount"}, (Object[][]) listData.toArray()); 

が、どのように私は、forループからlistDataプロパティに値を追加することができますか?次のように は今、あなたはそれを行うことができます:

((DefaultTableModel)tblModel).addRow("Cheese", "Pepperoni", "Black Olives"); 

動作するはずです:

ArrayList<Map<String, Object>> sampleArray = (ArrayList)myPremiumspaid.get("Data"); 
for(int x =0; x<sampleArray.size(); x++) 
{ 
    //sampleArray.get(x).get("YearMonth"); 
    listData.get(x).add(sampleArray.get(x).get("YearMonth")); 
} 

コードネームOneのDefaultTableModelはこれだけ使用してオブジェクトの配列やシリーズを受け入れるaddRow方法があります。

+1

FYIは、コードネームOneの 'DefaultTableModel'を参照して、下部の答えに細かい改良を加えました –

+0

返されたデータのサイズ(sampleArray)からlistData配列のサイズを指定することができました。 –

+0

listDataのサイズをsampleArrayの返されるデータのサイズで定義すると、別のオブジェクトからデータを追加する必要がある場合、配列の作成後に配列を拡張できないため、配列のサイズを拡張できません。したがって、動的に拡張可能なサイズが必要な場合は、ArrayListを使用する必要があります。 – CrawlingKid

関連する問題