[java]char[]をListに変換したい。
char[] abc = new char[] { 'a', 'b', 'c' }; List list = ...
今日2時間ぐらい、これで悩んでました。orz
できそうでできない。
結論から言うと簡単な方法はないです。
プリミティブな型の配列ではなく、参照型の配列ならできます。
可変長引数は、内部的には個々の引数の配列と同じなので、
Arrays#asList()で変換できます。
Character[] abc = new Character[] { 'a', 'b', 'c' }; List<Character> list = Arrays.asList(abc); System.out.println("list.size()="+list.size()); System.out.println("list="+list); /* 実行結果 list.size()=3 list=[a, b, c] */
でも、プリミティブ型の配列は可変長引数には展開されません。
1つのオブジェクトとして扱われます。
Character[] abc = new Character[] { 'a', 'b', 'c' }; List<char> list1 = Arrays.asList(abc); // コンパイルエラー。List<char>はダメ。 List<char[]> list2 = Arrays.asList(abc); // 欲しいモノと違う
じゃあ、char[]からCharacter[]に変換するAPIはないのかな。
と思って探してみたけどなかったです。(ないよね?)
ちなみに、リストから配列にするには、List#toArray()でできます。
これもやはり扱えるのは参照型の配列です。
List<Character> list = ... //Character[] ary = list.toArray(); // 互換性のない型 でエラー Character[] ary = list.toArray(new Character[list.size()]); System.out.println("ary="+ary); /* 実行結果 ary=[Ljava.lang.Character;@e48e1b */