2017-10-24 10 views
0

データベースでクエリを実行していますが、オブジェクトのジェネリックリストが返されます。以下のようにオブジェクト全体が構成されています。要するにジェネリックリストをjavaオブジェクトに変換

List<E> objDetails = 
    [0] --> ["name1", "value1"] 
    [1] --> ["name2", "value2"] 
    .... 
    [n] --> ["nameN", "valueN"] 

、私は戻ってオブジェクトの配列を取得し、各要素には、私がアクセスしたい名前と値のペアがあります。これらの値に到達する最も簡単な方法は何ですか?私は、この全体のリストを名前/値を保持できる、おそらく自己設計のクラスにキャストしようと考えています。キャッチは、1つは文字列であり、もう1つは整数であるということです。

私のオプションは何ですか?

編集:ここでは

は私が

private static class Clinic { 

    public List<ClinicDetails> details; 
} 

private static class ClinicDetails { 

    private Integer objectID; 
    private String healthName; 

} 

List<Clinic> clinic = DataServices.getResult(q); 

EDIT 2この問題を解決するために定義しようとした二つのクラスです。ここ

は私が

 List<Object[]> clinic = DataServices.getResult(q); 

     for(Object[] obj: clinic) { 

      for(int i = 0; i < obj.length; i++) { 
       System.out.println(obj[i]); 
       // will store in my own list now that I can access it 
      } 
     } 
+2

"名前/値を保持できる_self設計クラス_" ...実際にホイールを再作成しますか?なぜマップを使用しないのですか? –

+0

@JuanCarlosMendoza私は同意します!あなたは私にそれをする方法を簡単に教えてくれますか? – rmw

+2

@JuanCarlosMendozaは効率が悪く、メモリを増やし、タイプセーフでなく、いくつかの型の値が格納されている場合はキャストが必要なため、コード補完とリファクタリングができないためです。 –

答えて

1
この問題を解決する方法であります

単純なマップは次のようになります:

Map m=new HashMap<String, String>(); 
m.put("Key", "Value"); 
m.put("Key2", "Value2"); 
assertEquals(m.get("Key"), "Value"); 
assertEquals(m.get("Key2"), "Value2"); 

これらは、多くのユースケースを解決しますが、長期的に再利用可能なオブジェクトにはあまり適していません。誰もが "ハッシュ"を使用しますが、あなたが良い場合は、その使用法を単一のメソッドまたは単一のクラスに分離します。

+0

OPは、この作業をするために彼のIDが一意であることを確認しなければならないことに注意してください。 –

+1

彼の例から、彼はそれがどんな風に見えたかを知っています。 –

0

これは、説明したように再利用可能な汎用オブジェクトを実装します。

乾杯!

` public interface node<K,N> { 
    public K getKey(); 
    public N getValue(); 
} 
public class LogicalNode<K,N> implements node<K,N>{ 
    private K key; 
    private N value; 
    public LogicalNode(K key, N value) { 
     this.key = key; 
     this.value = value; 
    } 
    public K getKey() {return key;} 
    public N getValue() {return value;} 
} 
public class arr2lst { 
    public static void main(String[] args) { 
     ArrayList<node<String, Integer>> rs = new ArrayList<node<String,Integer>>(); 
     rs.add(new LogicalNode<String, Integer>("name", nbr)); 
     rs.add(new LogicalNode<String, Integer>("name2", nbr2)); 
    } 
}` 
関連する問題