2017-09-23 67 views
0

ファイルから行列を読み込み、すべての列のデータ型が異なります。 データを保持し操作するための構造体が見つかりません。手伝ってくれてありがとう。Javaのデータ型と動的バインディング

// I read a matrix from file and all column have a different type. 
    int[] iT = new int[] {1,3,5}; 
    long[] lT = new long[] {123, 456, 789}; 
    double[] dT = new double[] {1.2d, 3.2d, 5.2d}; 

    // I like to know if there are a kind of structure to hold and manipulate it. 
    Collection<Object[]> collection = new HashSet<Object[]>(); 

    collection.add(iT); 
    collection.add(dT); 
    collection.add(lT);  

    for(Object[] obj : collection) { 

     String type = obj.getClass().getSimpleName(); 

     switch (type) { 

     case "double[]": 
      for(Object element : obj) System.out.println(element); 
      break; 

     case "int[]": 
      for(Object element : obj) System.out.println(element); 
      break; 

     case "long[]": 
      for(Object element : obj) System.out.println(element); 
      break; 
     } 
    } 
+0

私のコードは動作しません;-) –

答えて

0

あなたの仕事の私の理解から、あなたは、単一のコレクション内のすべての単一の値ではなく、配列を(私が間違っているなら、私を修正)します。あなたは、基本的にそれらを置くことができます(ほぼ)あなたは(私はArrayListのを使用している)好きなコレクションは、あなたが持っている問題は、あなたがあなたのコレクションに追加することができます前に、プリミティブ配列を箱詰めする必要があるということである。もちろん

public static void main(String[] args) { 
    int[] iT = new int[] { 1, 3, 5 }; 
    long[] lT = new long[] { 123, 456, 789 }; 
    double[] dT = new double[] { 1.2d, 3.2d, 5.2d }; 

    Integer[] boxedInts = IntStream.of(iT).boxed().toArray(Integer[]::new); 
    Long[] boxedLongs = LongStream.of(lT).boxed().toArray(Long[]::new); 
    Double[] boxedDoubles = DoubleStream.of(dT).boxed().toArray(Double[]::new); 

    Collection<Object> collection = new ArrayList<>(); 

    collection.addAll(Arrays.asList(boxedInts)); 
    collection.addAll(Arrays.asList(boxedLongs)); 
    collection.addAll(Arrays.asList(boxedDoubles)); 

    for (Object element : collection) { 
     System.out.print(element.toString() + " "); 
    } 
    //prints 1 3 5 123 456 789 1.2 3.2 5.2 
} 
+0

ありがとう、私は私の問題を解決することができます。 –

+0

優れています。質問を閉じるために答えを受け入れてください。 – JensS

関連する問題