Wie kann ich einen String "13,5,8,4,2,1,9"
in aufsteigender Reihenfolge sortieren, um 1,2,4,5,8,9,13
zu erhalten?
Antworten
Zu viele Anzeigen?
Jon Skeet
Punkte
1325502
- Trennen Sie den String durch Kommas
- Analysieren Sie jeden Teilstring in eine Ganzzahl
- Sortieren Sie die resultierende Sammlung
- Wenn das Ergebnis einen String sein soll (es ist nicht klar), wandeln Sie jede Ganzzahl wieder in einen String um und fügen Sie sie mit Kommas zusammen.
Wenn einer dieser Schritte Ihnen Schwierigkeiten bereitet, seien Sie bitte genauer.
Marcelo Cantos
Punkte
173498
Jorn
Punkte
17575
Als eine Liner, die Google Collections verwendet (aktualisiert mit Kevins Vorschlag)
Joiner.on(",").join(Ordering.natural().onResultOf(new Function() {
@Override
public Integer apply(String from) {
return Integer.valueOf(from);
}
}).sortedCopy(Arrays.asList("4,2,7,9,1".split(","))));
- Teilen mit
String.split()
- Umwandeln in
Integer
mit einerFunction
(weiß jemand, ob es dafür irgendwo eine Konstante gibt?) - Sortieren mit einem
TreeSet
und natürlicher Ordnung - Teile zusammenfügen und zurück in einen
String
umwandeln mitJoiner
(alte Version)
Joiner.on(',').join(
Sets.newTreeSet(
Iterables.transform(
Arrays.asList("13,5,8,4,2,1,9".split(",")),
new Function() {
@Override
public Integer apply(String from) {
return Integer.parseInt(from);
}}))));
polygenelubricants
Punkte
362173
String s = "13,5,8,4,2,1,9";
String[] arr = s.split(",");
Arrays.sort(arr, new Comparator() {
@Override public int compare(String s1, String s2) {
return Integer.parseInt(s1) - Integer.parseInt(s2);
}
});
s = Arrays.toString(arr).replaceAll("[\\[ \\]]", "");
Diese Lösung verwendet:
java.util.Comparator
java.util.Arrays
sort
undtoString
String
split
undreplaceAll
- reguläre Ausdrücke
geffchang
Punkte
3226
- See previous answers
- Weitere Antworten anzeigen