Gibt es eine prägnantere Möglichkeit, einen String in einen Zeichensatz in Java umzuwandeln?Java

Java-Forum
Anonymous
 Gibt es eine prägnantere Möglichkeit, einen String in einen Zeichensatz in Java umzuwandeln?

Post by Anonymous »

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.
Nachtrag:
Der Sinn dieses Satzes besteht darin, einen statischen Satz zu initialisieren, damit ich so etwas schreiben kann:

Code: Select all

boolean isValidCharacter(char c) {
return hexSet.contains(c);
}
Das wäre effizienter, als Folgendes zu schreiben:

Code: Select all

return "0123456789ABCDEFabcdef".contains(c);

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post