2013-02-25 5 views
6

Я застрял в этой проблеме (отправка ключей в GUI), где я преобразовываю строку в массив символов, тогда я хочу, чтобы символьная строка была как arraylist. По существу:Преобразование массива символов в arraylist символов

String s = "ABC"; 
char[] cArray = s.toCharArray(); 
ArrayList<Character> cList = ?? 

Я хочу cList быть характер ArrayList формы ['A', 'B', 'C']. Я не знаю, как его распаковать, а затем из него вывести ArrayList. Arrays.asList() returns a List<char[]>, который не то, что я хочу или нуждаюсь.

Я знаю, что могу зацикливаться и добавить в список, я ищу что-то более простое (конечно, одно существует).

ответ

3

Насколько мне известно, в ядре JDK этого не существует, но функциональность предоставляется несколькими распространенными библиотеками.

Например, Apache Commons Lang имеет метод со следующей подписью в ArrayUtils:

Character [] toObject(char [] input) 

Кроме того, библиотека Google гуавы имеет еще более прямой метод в классе Chars:

public static List<Character> asList(char... backingArray) 
+1

Хотя у @Bhesh Gurung был полезный ответ, я искал более прямой метод, примет это как мой ответ (и доберусь до установки Google Guava). – arynaq

7

Вы должны перебрать массив:

List<Character> cList = new ArrayList<Character>(); 
for(char c : cArray) { 
    cList.add(c); 
} 

Примечание: Arrays.asList() работает только для ссылочных типов не примитивов.

+0

Я уверен, что это будут примитивы autobox. Если вас не очень беспокоит производительность, я не вижу причины не использовать его. – Aurand

+1

@Aurand, не совсем. 'Arrays.asList (new char [] {'a', 'b', 'c'})' фактически возвращает 'List' только с одним элементом: массив с 'a', 'b' и 'c', а не «Список» с тремя элементами, как можно было бы ожидать. – danidemi

2
Character[] chArray = {'n','a','n','d','a','n','k','a','n','a','n'}; 

List<Character> arrList = Arrays.asList(chArray); 
Смежные вопросы