Veröffentlicht am: 22.09.2012
Von: JLusiardi
In Kategorie: Programmieren
Google bietet in der Bibliothek Guava einige interessante Klassen an. Diese lösen Probleme, die mit der Standard-API nur auf Umwegen lösbar sind.
com.google.common.base.Joiner und com.google.common.base.Splitter
Joiner bietet das häufig vermisste Äquivalent von PHPs implode an. Allerdings ist der Funktionsumfang höher. Konfigurierbar ist welches Zeichen oder welche Zeichenkette zum Verbinden eingefügt werden soll, wie mit null-Werten verfahren wird (Ersetzen durch feste Zeichenkette oder überspringen). Weiterhin können nicht nur Arrays sondern auch Iteratoren als Eingabe verwendet werden. Über die Funktion withKeyValueSeparator und den gelieferten MapJoiner können auch Maps in Strings verwandelt werden.
Splitter ist das Gegenstück und das Äquivalent zu PHPs explode. Aufgeteilt werden kann nach einer festen Länge, an einzelnen Zeichen, Zeichenketten und Mustern. Weiterhin gibt es auch den MapSplitter und eine Funktion um die Ergebnisse automatisch zu trimmen.
com.google.common.base.Preconditions
Die Methoden dieser Klasse erlauben das vereinfachte, übersichtlichere Prüfen von Vorbedingungen der aufrufenden Methode. Beispielsweise kann der Code
if ( input == null ) {
throw
new NullPointerException("The parameter input was null!");
}
ersetzt werden durch
checkNotNull(input, "The parameter input was null!");
Weitere Methoden überprüfen die Gültigkeit von Indices in Felder und Listen. Im Fehlerfall wird hier eine IndexOutOfBoundsException geworfen. Mit den Funktionen checkState wird der interne Zustand der Instanz geprüft, unabhängig von den Argumenten der Methode. Weitere Informationen findet man in der Api zu den Preconditions.
com.google.common.base.Stopwatch
Die Klasse Stopwatch bietet die Funktionalität einer klassischen Stoppuhr mit einer Genauigkeit von Millisekunden.
Stopwatch stopwatch = new Stopwatch().start();
// zu messender Bereich
System.out.println("Time elapsed in seconds: " +
stopwatch.stop().elapsedTime(TimeUnit.SECONDS));
Sieht eleganter aus und ist flexibler als der Klassiker mit System.getTimeInMillis() und ähnlichen. Weitere Informationen findet man in der Api.
com.google.common.base.Strings
Die Methoden der Klasse Strings geben dem Entwickler einige Funktionen an die Hand, die im praktischen Programmieren im Umgang mit Zeichenketten hilfreich sein können.
Häufig muss man bei Strings prüfen, ob überhaupt eine Zeichenkette vorhanden ist, also weder null noch ein leerer String vorliegt, oder man will einen leeren String in null wandeln oder umgekehrt (Funktionen emptyToNull, isNullOrEmpty und nullToEmpty).
Viele Sprachen bieten direkt die Wiederholung von Strings (Beispielsweise 1000 * "Danke") an, hier wird dies über die Funktion repeat nachgeliefert.
Weitere Funktionen füllen Strings von rechts oder links mit Zeichen auf, bis diese eine feste Länge besitzen (padStart und padEnd) oder identifizieren gemeinsame Prä- und Suffixe (commonPrefix und commonSuffix).
Guava und Maven
Nichts einfacher als das, einfach folgende Dependency einfügen:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>13.0.1</version>
</dependency>