Вам придется либо использовать цикл, либо создать обертку для коллекции, например Arrays.asList
, которая работает с массивами примитивных символов (или непосредственно со строками).
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
обертка для строк:
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[]
:
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 , и оболочки для String в Lists.charactersOf (String) .