Java集合将字符串转换为字符列表 [英] Java collections convert a string to a list of characters
问题描述
我想将包含 abc
的字符串转换为字符列表和字符集哈希表。我怎么能在Java中做到这一点?
I would like to convert the string containing abc
to a list of characters and a hashset of characters. How can I do that in Java ?
List<Character> charList = new ArrayList<Character>("abc".toCharArray());
推荐答案
您必须使用循环,一个收集包装,如 Arrays.asList
,可用于原始字符数组(或直接在字符串上)。
You will have to either use a loop, or create a collection wrapper like Arrays.asList
which works on primitive char arrays (or directly on strings).
List<Character> list = new ArrayList<Character>();
Set<Character> unique = new HashSet<Character>();
for(char c : "abc".toCharArray()) {
list.add(c);
unique.add(c);
}
这是一个 Arrays.asList
像字符串的包装:
Here is an Arrays.asList
like wrapper for strings:
public List<Character> asList(final String string) {
return new AbstractList<Character>() {
public int size() { return string.length(); }
public Character get(int index) { return string.charAt(index); }
};
}
这是一个不可变的列表。如果你想要一个可变的列表,使用 char []
:
This one is an immutable list, though. If you want a mutable list, use this with a char[]
:
public List<Character> asList(final char[] string) {
return new AbstractList<Character>() {
public int size() { return string.length; }
public Character get(int index) { return string[index]; }
public Character set(int index, Character newVal) {
char old = string[index];
string[index] = newVal;
return old;
}
};
}
请注意,通常不建议这样使用,因为对于每次访问,
都会执行打包和取消打包操作。
Guava库包含几个原始数组类的类似List包装器方法,例如Chars.asList ,以及 Lists.charactersOf(String)。
The Guava library contains similar List wrapper methods for several primitive array classes, like Chars.asList, and a wrapper for String in Lists.charactersOf(String).
这篇关于Java集合将字符串转换为字符列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!