转换的字符数组在Java列表(Converting Char Array to List in Ja

2019-07-22 22:02发布

谁能帮助我,告诉如何将转换char数组列表,反之亦然。 我想写用户在其中输入字符串(如节目"Mike is good" ),并在输出中,每个空格被替换为"%20" (即"Mike%20is%20good" )。 虽然这可以在许多方面,但由于插入和删除取O(1)在链表我想用一个链表尝试它的时间来完成。 我要寻找一个好歹转换的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"*/
    }
}

因此,在这个程序中的用户输入字符串,这是我在我储存StringBuffer ,这我先转换为字符串,然后到一个char数组,但我没能获得一个列表ls

我会很感激,如果有人能告诉转换的正确方法char数组列表,也反之亦然。

Answer 1:

在Java 8及以上,则可以使用String的方法chars()

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

如果你需要转换char[]List<Character> ,您可以创建一个String ,从它第一次,然后应用上面的解决方案。 虽然它不会是非常可读和漂亮,这将是相当短。



Answer 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);
    }
}

这是你如何转换列表返回数组:

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




有趣的是为什么List<char[]> asList = Arrays.asList(chars); 没有它做什么: asList可以利用阵列或可变参数 。 在这种情况下char [] chars认为单值可变参数 char[] 所以,你也可以写类似

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



Answer 3:

另一种方法不是使用一个循环将是使用番石榴的Chars.asList()方法。 然后将字符串转换为字符的一个LinkedList的代码只是:

LinkedList<Character> characterList = new LinkedList<Character>(Chars.asList(string.toCharArray()));

或者,更番石榴方式:

LinkedList<Character> characterList = Lists.newLinkedList(Chars.asList(string.toCharArray()));

番石榴库包含了很多好东西,所以它的价值,包括在您的项目。



Answer 4:

现在,我将发布这个答案作为另一种选择为所有那些不允许使用任何LIB但Java 8 :)的只有电源开发

char[] myCharArray = { 'H', 'e', 'l', 'l', 'o', '-', 'X', 'o', 'c', 'e' };

Stream<Character> myStreamOfCharacters = IntStream
          .range(0, myCharArray.length)
          .mapToObj(i -> myCharArray[i]);

List<Character> myListOfCharacters = myStreamOfCharacters.collect(Collectors.toList());

myListOfCharacters.forEach(System.out::println);


Answer 5:

你不能使用Java泛型与原始类型, 为什么呢?

如果你真的想要转换到列表和回阵列然后dantuch的做法是正确的。

但是,如果你只想做更换有方法在那里(即java.lang.String的的replaceAll ),可以为你做

private static String replaceWhitespaces(String string, String replacement) {
    return string != null ? string.replaceAll("\\s", replacement) : null;
}

您可以使用它像这样:

StringBuffer s = new StringBuffer("Mike is good");
System.out.println(replaceWhitespaces(s.toString(), "%20"));

输出:

Mike%20is%20good


文章来源: Converting Char Array to List in Java