如何将 String("dog") 拆分为 Arraylist ['d'、'o'、'g']?

How to split a String("dog") to an Arraylist ['d', 'o', 'g']?

我有一个输入 String,我希望它的字母在 ArrayList 中。喜欢 "abc"['a', 'b', 'c']

我试过split()方法,但它的错误是Cannot resolve method 'asList(java.lang.String[])'

userInput = scanner.next();
inputLetters = new ArrayList<Character>(Arrays.<Character>asList(userInput.split("")));

我有 java 13,所以这应该有用

您可以使用 toCharArray 。这是示例代码

String userInput = "abc";

        for (char c : userInput.toCharArray()) {
            System.out.println(c);
        }

当您将 String[] 传递给 Arrays.asList() 时,您将得到 List<String>,而不是 List<Character>

您可以按如下方式将 List<String> 转换为 List<Character>

List<Character> inputLetters = Arrays.asList(userInput.split(""))
                                     .stream()
                                     .map(s -> s.charAt(0))
                                     .collect(Collectors.toList());

获得List<Character>的另一种方法:

List<Character> inputLetters = userInput.chars()
                                        .mapToObj(i -> (char)i)
                                        .collect(Collectors.toList());

当然,如果您不介意使用 char[] 而不是 List<Character>,只需使用 userInput.toCharArray().

此错误是由于 userInput.split("") 生成的 ["a","b","c"] 是一个字符串数组,而不是预期的 ['a','b','c'] 这是一个字符数组。

一个简单的解决方法是:

  1. 将字符串拆分为字符数组
  2. 创建一个空数组列表
  3. 遍历char数组并将其添加到arrayList

String userInput = "abc";
char[] inputCharArray = userInput.toCharArray();
List<Character> userList = new ArrayList<>();
for(char c: inputCharArray)
    userList.add(c);

此代码应该有效:

public static ArrayList<Character> convertStringToList(String s){
    ArrayList<Character> list = new ArrayList<>();
    char[] chars = s.toCharArray();
    for (char c : chars){
        list.add(c);
    }
    return list;
}

代码只是将 String 转换为 char[] 并遍历数组,形成列表。