14 Stimmen

Sortiere String "13,5,8,4,2,1,9" in aufsteigender Reihenfolge 1,2,4,5,8,9,13 in Java

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?

2voto

Viktor Sehr Punkte 12520
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 =)

1voto

Yuliy Punkte 16897

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 splitten, die Ganzzahlen zu parsen, das resultierende Array zu sortieren und dann die Ergebnisse zusammenzufügen join

0voto

Sanjeev Punkte 1093

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;
}

}

0voto

OscarRyz Punkte 189898

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 );
    }
}

0voto

YCF_L Punkte 51230

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.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X