Ich möchte einen nicht veränderbaren Satz bestimmter Zeichen erstellen und der Übersichtlichkeit halber möchte ich diesen Satz mit einem String initialisieren. Im Moment kann ich es so machen:
Code: Select all
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);
}
Aber das ist ungeschickt und ausführlich. Ich würde es lieber so machen:
Code: Select all
private static final Set hexSet
= Collections.unmodifiableSet(new HashSet("0123456789ABCDEFabcdef".toCharArray()));
Natürlich kann ich ein Set nicht mit einem Array initialisieren, also habe ich Folgendes versucht:
Code: Select all
private static final Set hexSet = Collections.unmodifiableSet(
new HashSet("0123456789ABCDEFabcdef".chars().boxed().collect(Collectors.toList())
);
Dies wird nicht kompiliert, da die chars()-Methode einen Strom von int-Werten zurückgibt, keine Zeichen. Ich kann die Werte nicht Zeichen zuordnen, da es keine CharStream-Klasse und keine Zuordnungsmethode gibt, die einem primitiven Objekt zugeordnet werden kann.