Sort String "13,5,8,4,2,1,9" в порядке возрастания 1,2,4,5,8,9,13 в Java

Как я могу отсортировать строку "13,5,8,4,2,1,9" в порядке возрастания, чтобы получить 1,2,4,5,8,9,13?

Ответы

Ответ 1

  • Разделите строку запятыми
  • Разделите каждую подстроку на целое число
  • Сортировка получаемой коллекции
  • Если вам нужно, чтобы результат был строкой (она не понятна), преобразовать каждое целое обратно в строку и объединить их вместе с запятыми.

Если какой-либо из этих шагов вызывает трудности, будьте более конкретными.

Ответ 2

  • Разделите его на массив элементов с помощью String.split().
  • Преобразовать в массив чисел с помощью Integer.valueOf().
  • Сортировка массива.
  • Сконцентрируйте все это на StringBuilder.

Ответ 3

Как один вкладыш, используя Google Collections (обновленный с предложением Кевина)

Joiner.on(",").join(Ordering.natural().onResultOf(new Function<String, Integer>() {
    @Override
    public Integer apply(String from) {
        return Integer.valueOf(from);
    }
}).sortedCopy(Arrays.asList("4,2,7,9,1".split(","))));
  • Разделить с помощью String.split()
  • Преобразовать в Integer с помощью Function (кто-нибудь знает, есть ли константа для этого где-нибудь?)
  • Сортировка с использованием TreeSet и естественного упорядочения
  • Присоедините части и вернитесь к String с помощью Joiner

(старая версия)

Joiner.on(',').join(
    Sets.newTreeSet(
        Iterables.transform(
            Arrays.asList("13,5,8,4,2,1,9".split(",")),
            new Function<String, Integer>() {
                @Override
                public Integer apply(String from) {
                    return Integer.parseInt(from);
                }}))));

Ответ 4

String s = "13,5,8,4,2,1,9";
String[] arr = s.split(",");
Arrays.sort(arr, new Comparator<String>() {
   @Override public int compare(String s1, String s2) {
      return Integer.parseInt(s1) - Integer.parseInt(s2);
   }
});
s = Arrays.toString(arr).replaceAll("[\\[ \\]]", "");

В этом решении используется:

Ответ 5

Я бы обозначил строку, используя StringTokenizer,
проанализировать значения (используя Integer.parseInt),
затем отсортируйте результаты с помощью массива Arrays.sort.
Наконец, заново создайте строку.

Ответ 6

String str = "13,5,8,4,2,1,9";
StringTokenizer tokens = new StringTokenizer(", ");
ArrayList<Integer> ints = new ArrayList<Integer>();
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();

Возможно, у вас есть неправильные опечатки, но я думаю, что нет. Кроме того, добавьте соответствующий импорт самостоятельно =)

Ответ 7

Итак, у вас есть строка, содержащая целые числа с разделителями-запятыми, которые нужно сортировать, а затем выводить на строку? Попробуйте split -показать строку, parse -интегрировать целые числа, sort -в результате результирующего массива, а затем join -соединяя результаты вместе

Ответ 8

ok вы можете попробовать это, он работает во всех случаях.

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 sorted List ...");
        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 sorted List ...");

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

}

Ответ 9

Альтернатива с использованием java.util.Scanner

public class SortString {
    public static void main( String [] args ) {
        // Read integers using Scanner...
        Scanner scanner = new Scanner( "13,5,8,4,2,1,9" ).useDelimiter(",");

        // Put them in a Integer list
        List<Integer> list = new ArrayList<Integer>();
        while( scanner.hasNextInt() ){
            list.add( scanner.nextInt() );
        }
        // And sort it
        Collections.sort( list );
        System.out.println( list );
    }
}

Ответ 10

class SplitStr
{
  public static void main(String args[])
  {
    try
    {
      String str=args[0]+","+args[1];    //marge two string in one
      String sArr[]=str.split(",");
      int slen=sArr.length;
      int iArr[]=new int[slen];
      int temp;
      for(int i=0;i<slen;i++)
      {
       iArr[i]=Integer.parseInt(sArr[i]);   //convert String into integer array

      }
      for(int i=0;i<slen;i++)
      {
        for(int j=i+1;j<slen;j++)
        {
          if(iArr[i]>=iArr[j])
          {
            temp=iArr[i];
            iArr[i]=iArr[j];
            iArr[j]=temp;
          }
        }
      }
      for(int i=0;i<slen;i++)
      {
        System.out.println(" "+iArr[i]);
      }
    }
    catch(Exception e)
    {
      System.out.println("input error "+e);
    }
  }
}

Ответ 11

Это один из способов сортировки.

package com.java;


import java.util.ArrayList;

import java.util.Collections;


public class b{

public static void main(String[] args) {
//create an ArrayList object

ArrayList arrayList = new ArrayList();


//Add elements to Arraylist

arrayList.add("9");
arrayList.add("3");
arrayList.add("5");
arrayList.add("2");
arrayList.add("4");

Collections.sort(arrayList);


//display elements of ArrayList

System.out.println("ArrayList elements after sorting in ascending order : ");

for(int i=0; i<arrayList.size(); i++)

System.out.println(arrayList.get(i));



}

}

Ответ 12

Bash SO мощный:-)

numbers = "1, 2, 9, 4, 7, 5"; для числа в $(echo "$ numbers" ); do echo "$ number" | tr -d ","; сделано | сортировать | tr "\n" ","; echo ""