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?String str = "13,5,8,4,2,1,9";
StringTokenizer tokens = new StringTokenizer(", ");
ArrayList ints = new ArrayList();
for(String token: tokens)
ints.add(Integer.parseInt(token));
Collection.sort(ints);
String sortedStr = "";
for(int i = 0; i + 1 < ints.size(); ++i)
sortedStr += ints.get(i) + ", ";
if (ints.size() > 0)
sortedStr += ints.lastElement();
Möglicherweise einige Rechtschreibfehler, aber ich glaube nicht. Fügen Sie auch die entsprechenden Imports selbst hinzu =)
Also haben Sie eine Zeichenkette mit einem kommagetrennten Satz von ganzen Zahlen, die Sie sortieren und dann in eine Zeichenkette ausgeben müssen? Versuchen Sie, die Zeichenkette zu split
ten, die Ganzzahlen zu parse
n, das resultierende Array zu sort
ieren und dann die Ergebnisse zusammenzufügen join
Ok, du kannst das ausprobieren, es funktioniert in allen Fällen.
package com.java;
import java.util.*;
public class cd
{
public static void main(String s[])
{
Collections col;
List l = sort(s);
System.out.println("\nStrings sortierte Liste ...");
for(int i = 0; i < s.length; i++)
{
System.out.println((String)l.get(i));
}
int ints[] = {
719, 2, -22, 401, 6
};
Integer in[] = new Integer[ints.length];
for(int i = 0; i < in.length; i++)
{
in[i] = new Integer(ints[i]);
}
l = sort(in);
System.out.println("\nIntegers sortierte Liste ...");
for(int i = 0; i < in.length; i++)
{
System.out.println((Integer)l.get(i));
}
}
public static List sort(Object o[])
{
ArrayList al = new ArrayList();
for(int i = 0; i < o.length; i++)
al.add(i, o[i]);
List list = Collections.synchronizedList(al);
Collections.sort(list);
return list;
}
}
Ein alternativer Ansatz mit java.util.Scanner
public class SortString {
public static void main( String [] args ) {
// Lesen von Ganzzahlen mit Scanner...
Scanner scanner = new Scanner( "13,5,8,4,2,1,9" ).useDelimiter(",");
// In eine Integer-Liste einfügen
List list = new ArrayList();
while( scanner.hasNextInt() ){
list.add( scanner.nextInt() );
}
// Und sortieren
Collections.sort( list );
System.out.println( list );
}
}
Java 8+
Wenn Sie Java 8 verwenden, können Sie Streams zum Sortieren wie folgt verwenden:
String str = "13,5,8,4,2,1,9";
String sortedString =
Arrays.stream(str.split(",")) //split with ','
.map(Integer::valueOf) //convert your strings to ints
.sorted() //sort
.map(String::valueOf) //convert them back to string
.collect(Collectors.joining(","));//1,2,4,5,8,9,13
Wenn Sie ein sortiertes Array möchten, können Sie auch Folgendes verwenden:
Integer[] sortedInts =
Arrays.stream(str.split(",")) //split with ','
.map(Integer::valueOf) //convert your strings to ints
.sorted() //sort
.toArray(Integer[]::new);//[1, 2, 4, 5, 8, 9, 13]
Die Idee ist die gleiche wie in der Erklärung von Jon Skeet.