かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

JavaでListからint[]に変換したいんだけど…

最近お仕事ではJava屋さんになってます。ちょっとしたデータをDBに突っ込むプログラムをJavaで書いたりしてる中で、Listからint[]に変換したいって思うことがありました。toArrayで楽勝楽勝と思ったら…

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

悩ましい。