split-string und speichern Sie es in die HashMap java 8
Will ich split unterhalb string und speichern Sie es in die HashMap.
String responseString = "name~peter-add~mumbai-md~v-refNo~";
zuerst habe ich split den string mit delimeter Bindestrich (-) und speichern Sie es in ArrayList wie folgt:
public static List<String> getTokenizeString(String delimitedString, char separator) {
final Splitter splitter = Splitter.on(separator).trimResults();
final Iterable<String> tokens = splitter.split(delimitedString);
final List<String> tokenList = new ArrayList<String>();
for(String token: tokens){
tokenList.add(token);
}
return tokenList;
}
List<String> list = MyClass.getTokenizeString(responseString, "-");
und verwenden Sie dann den folgenden code zu konvertieren, um HashMap mit Strom.
HashMap<String, String> = list.stream()
.collect(Collectors.toMap(k ->k.split("~")[0], v -> v.split("~")[1]));
Den stream collector funktioniert nicht, da kein Wert gegen refNo.
Funktioniert es einwandfrei, wenn ich gerade Anzahl von Elementen in der ArrayList.
Gibt es eine Möglichkeit, dies zu behandeln? Auch darauf, wie ich verwenden können, Strom zu tun, diese zwei Aufgaben (I dont verwenden möchten getTokenizeString () - Methode) die Nutzung von Streams in java 8.
InformationsquelleAutor Sangam Belose | 2017-01-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sofern
Splitter
ist dabei jede Magie, diegetTokenizeString
Methode ist veraltet hier. Sie führen die gesamte Abwicklung, als eine einzelne operation:Mithilfe des regulären Ausdrucks
\s*-\s*
als Trenner, Sie werden unter Berücksichtigung von Leerzeichen als Teil des separators, damit implizit trimmen der Einträge. Es gibt nur eine erstetrim
Betrieb vor der Verarbeitung der Einträge, um sicherzustellen, dass es keine Leerzeichen vor dem ersten oder nach dem letzten Eintrag.Dann einfach teilen Sie die Einträge in einem
map
Schritt vor der Erhebung in einemMap
.InformationsquelleAutor Holger
Erste von allen, müssen Sie nicht haben, zu teilen Sie die gleichen
String
zweimal.Zweitens, überprüfen Sie die Länge des Arrays zu bestimmen, ob ein Wert vorhanden ist, für einen bestimmten Schlüssel.
Dies wird vorausgesetzt, Sie will den Schlüssel mit einem
null
Wert, wenn eine Taste keinen entsprechenden Wert.Oder Sie können überspringen Sie die
list
variable :Ich habe versucht deinen code.Es wirft NullPointerException. es funktioniert nur für sogar große Liste.
Dieser code setzt Voraus, Sie halten
List<String> list = MyClass.getTokenizeString(responseString, "-");
auch Wenn ich immer MyClass.getTokenizeString(responseString, "-"); wirft er den null-Zeiger. es scheitert an der letzten array-Wert.
InformationsquelleAutor Eran