最近お仕事ではJava屋さんになってます。ちょっとしたデータをDBに突っ込むプログラムをJavaで書いたりしてる中で、List
List<Integer> l = Arrays.asList(10, 20, 30); int[] array = l.toArray(new int[l.size()]); // エラー!! Integer[]とint[]はboxingとかしないよねハイ…
ということで、ぐるぐる(関係ないけど、ぶれいずさん(id:bleis-tift)が頭に浮かんだ)とループを回して変換しました…。
List<Integer> l = Arrays.asList(10, 20, 30); int[] array = new int[l.size()]; // ぐるぐるとコピーしてまわる… for (int i = 0; i < array.length; i++) { array[i] = l.get(i); } System.out.println(Arrays.toString(array)); // {10, 20, 30}
C#とかだとこんな感じなんですけど、Javaでもっとうまい書き方ないかなぁ??
// JavaのInteger型にあたるものがないのでTupleにしてみた var l = new List<Tuple<int>> { Tuple.Create(10), Tuple.Create(20), Tuple.Create(30) }; // 変換して配列化とかLINQのお家芸ですよね var array = l.Select(t => t.Item1).ToArray(); Console.WriteLine(string.Join(", ", array)); // 10, 20, 30
悩ましい。