在 Java 中将 Char 数组转换为列表

2022-09-01 04:44:29

任何人都可以帮助我,并告诉我如何将数组转换为列表,反之亦然。我正在尝试编写一个程序,其中用户输入一个字符串(例如),并且在输出中,每个空格都替换为(即)。虽然这可以通过多种方式完成,但是由于插入和删除在链接列表中需要O(1)时间,因此我想用链接列表尝试一下。我正在寻找将数组转换为列表,更新列表然后将其转换回去的方法。char"Mike is good""%20""Mike%20is%20good"char

public class apples
{
   public static void main(String args[])
   {
      Scanner input = new Scanner(System.in);
      StringBuffer sb = new StringBuffer(input.nextLine());

      String  s = sb.toString();
      char[] c = s.toCharArray();
      //LinkedList<char> l = new LinkedList<char>(Arrays.asList(c));
      /* giving error "Syntax error on token " char",
         Dimensions expected after this token"*/
    }
}

因此,在此程序中,用户正在输入字符串,我将其存储在中,我首先将其转换为字符串,然后转换为数组,但是我无法从中获取列表。StringBuffercharls

如果有人能说出将数组转换为列表的正确方法,我将不胜感激,反之亦然。char


答案 1

在 Java 8 及更高版本中,您可以使用 String 的方法 chars()

myString.chars().mapToObj(c -> (char) c).collect(Collectors.toList());

如果您需要转换为 ,则可以先从中创建一个,然后应用上述解决方案。虽然它不会很可读和漂亮,但它会很短。char[]List<Character>String


答案 2

因为 char 是基元类型,所以标准不起作用。它将产生代替...所以剩下的就是迭代数组,并用该数组中的数据填充新列表:Arrays.asList(char[])List<char[]>List<Character>

    public static void main(String[] args) {
    String s = "asdasdasda";
    char[] chars = s.toCharArray();

    //      List<Character> list = Arrays.asList(chars); // this does not compile,
    List<char[]> asList = Arrays.asList(chars); // because this DOES compile.

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

这就是您将List转换回数组的方式:

    Character[] array = listC.toArray(new Character[listC.size()]);




有趣的是,为什么它做什么:可以采取数组或vararg。在这种情况下,被视为 !所以你也可以写一些类似的东西List<char[]> asList = Arrays.asList(chars);asListchar [] charschar[]

List<char[]> asList = Arrays.asList(chars, new char[1]);:)