2011-10-31 8 views
2

データ構造Map<String, int[]>をハイバーネイトでマップすることはできますか?配列は常に同じ番号のエントリを持ちます。Map <String、int []>のマップ方法は?

おそらくばかな質問して申し訳ありませんが、私は現在、これを行うにはどのようには考えています。

+4

int [4]の数字の意味は何ですか?これは、実際には4つのフィールドを持つ新しいクラスが必要なようです。 –

+0

配列には、開発プロセスのステップにマッピングされた測定値の目標値が格納されます。例えば、レベル0では、値は2でなければならず、レベル1では5でなければなりません。結果は[0] = 2と[1] = 5となります。文字列には測定値の名前が格納されます。 私は自分自身を修正する必要があります。ステップの数は一定ですが、設定可能な==>ので、配列またはリストが必要です。私たちのテスト構成では、4を使用します。 私の考えは、文字列と配列をメンバーとしてクラスを実装し、このクラスを個別にマップすることです。しかし、よりエレガントな方法がありますか? – BitSchupser

+1

'Measurement {String name;}のようなクラスです。 int [] data; } 'はもっと「リレーショナル」で、次に' Map 'となりますが、名前によるアクセスが複雑になります - 通常のアクセスパターンは何ですか?近い将来に「期待値」以上のものがある場合は、おそらく 'Measurement {String name; SortedSet データ。 }クラスDataPoint {int value; ...} 'は別の(非常に冗長な)オプションかもしれません。 –

答えて

0

私はいくつかの時間前に似た何かをしようとしたとしても、いくつかの深刻な文献調査の後、私は一般的な方法で休止状態にマッピングアレイの方法を見つけることができませんでした。その時

私の解決策は、これらのフィールドにアレイ状のアクセスを可能にするフィールドとアクセサメソッド(4よりもはるかに)で包装クラスでした。

int a; 
int b; 
int c; 
int d; 

public int get(int ref) { 
    switch(ref) { 
    case 0: 
     return a; 
    case 1: 
     return b; 
    case 2: 
     return c; 
    case 3: 
     return d; 
    default: 
     throw new ArrayIndexOutOfBoundsException(); 
    } 
} 

注意すべき4つ以上の変数がある場合は、switch文の代わりにreflectionを使用できます。

関連する問題