谁能帮助我,告诉如何将转换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
数组,但我没能获得一个列表l
的s
。
我会很感激,如果有人能告诉转换的正确方法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