かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

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

悩ましい。