0

次のスニペットを使用して、Hibernateから返されたリストから多次元配列double[][]を作成しようとしています。

dataリストはになり、makeSet配列をmakeSet返そうとします。[][] double最適なのは、アレイをいくつ持つべきかわからないことです。だから私は呼び出してみましたが、コードでmakeInnerSetを作成しない限りnew double[][] ix, iy、コードはうまく繰り返されません。

配列[][]の列を知る方法はありますか?

おそらく、問題への別のアプローチがありますか?

Hibernateのスカラー値を取り戻し、それらを任意のサイズのdouble[][]にする必要があります。何か助けはありますか?

List data = qry.list();
double[][] inputData = makeSet(data);

public double[] makeInnerSet(List data, double[] ix, int col ){
    int i = 0;
    Iterator<?> itr1 = data.listIterator();
    while (itr1.hasNext()) {
        Object[] result = (Object[]) itr1.next();
        if (result[col] != null) {
            double res1 = (Double) result[col];
            ix[i] = res1;
        }else{
            ix[i] = 0;
        }
        i++;
    }
    return ix;
}
public double[][] makeSet(List data){
    Iterator<?> itr1 = data.listIterator();
    double[] ix = new double[data.size()];
    double[] iy = new double[data.size()];
    double[][] x = { makeInnerSet(data, iy,0), makeInnerSet(data, ix,1) };  
    return x;
}

編集 コードの作成をうまく行う:

double[][] x = { 
            makeInnerSet(data, new double[data.size()],0), 
            makeInnerSet(data, new double[data.size()],1) 
            };  

私の答えを半分見つけました...数秒後...私は確かに今はixを必要としません。しかし、リストの列数を取得するにはどうすればよいですか?

4

1 に答える 1

0

リスト内のすべての配列が同じサイズであると仮定します(そうしないと、makeinnersetも爆撃するため):

int columns = ((Object[])data.first()).size()

コードは最初の配列を取得し、そのサイズを取得します。これはすべての配列で同じである必要があります。

于 2012-08-31T09:27:43.597 に答える