将字符数组转换为字符列表

11

我在处理一个问题(向GUI发送键)时遇到了困难,我需要将字符串转换为字符数组,然后将字符数组作为ArrayList。实际上:

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

我希望 cList 是一个字符数组列表,形式为 ['A', 'B', 'C']。我不知道如何解包它,然后将其转换为 ArrayList。 Arrays.asList() 返回的是一个 List<char[]>,这不是我想要或需要的。
我知道我可以循环并添加到列表中,但我正在寻找更简单的方法(肯定有一种存在)。
3个回答

15
你必须循环遍历数组:
List<Character> cList = new ArrayList<Character>();
for(char c : cArray) {
    cList.add(c);
}

注意:Arrays.asList() 只适用于引用类型而不是原始类型。

我非常确定它会自动装箱基本类型。除非你非常关心性能,否则我不认为有理由不使用它。 - Aurand
2
@Aurand,不完全是这样。Arrays.asList(new char[]{'a','b', 'c'})实际上返回的是一个只有一个元素的List:一个包含'a'、'b'和'c'的数组,而不是一个包含三个元素的List,这可能会让人感到意外。 - danidemi

4
据我所知,JDK核心中并不存在此功能,但是许多常见的库都提供了此功能。
比如,Apache Commons Lang 库中的 ArrayUtils 类提供了以下签名的方法:
Character [] toObject(char [] input)

同样地,Google Guava库在Chars类中提供了一个更加直接的方法:
public static List<Character> asList(char... backingArray)

1
虽然@Bhesh Gurung提供了有用的答案,但我正在寻找更直接的方法,将其作为我的答案(并安装Google Guava)。 - arynaq

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

List<Character> arrList = Arrays.asList(chArray);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接