2016-08-26 19 views
0

Object[][]を別のObject[][]にどのように追加しますか?2つのオブジェクト[] []を一緒に追加する

Object dhadj[][] = new Object[0][6]を作成しました。これは、行数がわからないため0に初期化されていますが、列数はわかります。

ループでは、dhaという別のObject[][]を作成し、データベース内のデータを検索します。私の意図は、すべてのループの最後に、dhadhadjに追加機能を使って追加したいと考えています。しかし、私はエラーが発生します。配列をオブジェクトの戻り値(Object [] [])に変換する際に問題があります。temp.toArray()です。

これを解決するにはどうすればよいですか?別の方法がありますか?ここで

は私のコードです:

Object dhadj[][] = new Object[0][6]; 
v = vector; 
ro = size; 
for (int i = 0; i < ro; i++) { 
    int d; 
    d = Integer.valueOf(v[i]); 
    query = "SELECT * FROM hadj WHERE id=?"; 

    try (PreparedStatement preparedStatement = c.prepareStatement(query, ResultSet.TYPE_SCROLL_INSENSITIVE, 
      ResultSet.CONCUR_READ_ONLY)) { 
     preparedStatement.setInt(1, d); 
     ResultSet rs = preparedStatement.executeQuery(); 
     if (rs != null) { 
      rs.last(); 
      int siz = rs.getRow(); 
      rs.beforeFirst(); 

      ResultSetMetaData rsMeta = rs.getMetaData(); 
      int a = 0; 
      Object dha[][] = new String[siz][6]; //the neew object dha 

      while (rs.next()) { 

       dha[a][0] = rs.getString("id"); 
       dha[a][1] = rs.getString("idh"); 
       dha[a][2] = rs.getString("ticket"); 
       dha[a][3] = rs.getString("montant"); 
       dha[a][4] = rs.getString("datei"); 
       dha[a][5] = rs.getString("nombrep"); 

       a = a + 1; 

      }//end while 
      dhadj = appendValue(dhadj, dha); //here I add it using fuction 
     } else { 
      dhadj[0][0] = Integer.toString(d); 
      for (int ii = 1; ii < 6; ii++) { 
       dhadj[0][ii] = ""; 
      } 
     } 
    }//end try 
}//end for v 

は、これは私が配列を一緒に追加するために使用しています関数です。

private Object[][] appendValue(Object[][] obj, Object[][] newObj) { 
    ArrayList<Object> temp = new ArrayList<Object>(Arrays.asList(obj)); 
    temp.add(newObj); 
    return (Object[][]) temp.toArray(); 
} //end appendvalue 
+1

もしあなたが* '* [Object [] []' sを持っていれば、おそらく深刻なデータモデリングの問題があります。 – chrylis

+0

確かに、あなたはそれをすべて間違っている。これらの6つのフィールドを持つクラス( 'Foo'と呼んでいますが、おそらくそうではないはずです)を作成し、' ResultSet'から各行から 'Foo'を1つ作り、リスト '。 – dcsohl

+0

ok mr dcsohl私はそれをやろうとします... – Joseph

答えて

1

あなたは要素の数がわからない場合、あなたがすべきリストを使用している。あなたは、オブジェクト[] 6つの結果で、(セット)results.add呼び出しの作成が完了したら

List<Object[]> results = new ArrayList<>(); 
Object[] set = new Object[6]; 

;:私は、ArrayListのかArrayDequeでいいよ

+0

ListまたはLinkedListを使用すると良い選択です.Jacob – Joseph

+0

デフォルトのgo-toリストはArrayListにする必要があります。 LinkedListは非常に特殊な状況で役に立ちます。どちらもListインターフェイスを実装しています。 –

+0

ArrayListsは、通常、私の好みのListタイプです。私はそれをさらに調べて、LinkedListsは通常、非常に限られた用途しか持たず、ArrayListsの方が一般にパフォーマンスが優れているように見えます[リンク](http://stackoverflow.com/questions/322715/when-to-use-linkedlist-over-arraylist)。これは私のお勧めです。 – Jacob

関連する問題