Есть ли более лаконичный способ преобразования строки в набор символов в Java?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Есть ли более лаконичный способ преобразования строки в набор символов в Java?

Сообщение Anonymous »

Я хочу создать неизменяемый набор определенных символов и для ясности хочу инициализировать этот набор строкой. Прямо сейчас я могу сделать это вот так:

Код: Выделить всё

static {
final String hexCharacters = "0123456789ABCDEFabcdef"; //NON-NLS
final Set tempHexSet = new HashSet();
for (char c : hexCharacters.toCharArray()) {
tempHexSet.add(c);
}
final Set hexSet = Collections.unmodifiableSet(tempHexSet);
}
Но это неуклюже и многословно. Я бы предпочел сделать это примерно так:

Код: Выделить всё

private static final Set hexSet
= Collections.unmodifiableSet(
new HashSet(
"0123456789ABCDEFabcdef".toCharArray()
)
);
Конечно, я не могу инициализировать Set массивом, поэтому попробовал так:

Код: Выделить всё

private static final Set hexSet = Collections.unmodifiableSet(
new HashSet("0123456789ABCDEFabcdef"
.chars()
.boxed()
.collect(Collectors.toList())
);
Это не компилируется, поскольку метод chars() возвращает поток значений int, а не символов. Я не могу сопоставить значения с символами, потому что нет класса CharStream и нет метода сопоставления, который будет сопоставляться с примитивным объектом.
Дополнение:
Цель этого набора — инициализировать статический набор, чтобы я мог написать что-то вроде этого:

Код: Выделить всё

boolean isValidCharacter(char c) {
return hexSet.contains(c);
}
Это было бы более эффективно, чем писать следующее:

Код: Выделить всё

return "0123456789ABCDEFabcdef".contains(c);


Подробнее здесь: https://stackoverflow.com/questions/798 ... rs-in-java
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»