Строка вида “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?

14
задан YCF_L 16 August 2018 в 08:54
поделиться

11 ответов

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

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

2
ответ дан 1 December 2019 в 06:03
поделиться

В качестве одного лайнера с использованием Коллекций Google (обновлено с учетом предложения Кевина)

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 ()
  • Преобразовать в Целое число с помощью функции (кто-нибудь знает, есть ли где-то константа для этого?)
  • Сортировка, используя 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);
                }}))));
8
ответ дан 1 December 2019 в 06:03
поделиться

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

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



}

}
-1
ответ дан 1 December 2019 в 06:03
поделиться
  • Разделить строку запятыми
  • Разобрать каждую подстроку на целое число
  • Сортировать полученную коллекцию
  • Если вам нужно, чтобы результат был строка (непонятно), преобразовать каждое целое число обратно в строку и соединить их запятыми.

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

27
ответ дан 1 December 2019 в 06:03
поделиться
  1. Разделите его на массив элементов с помощью String.split () .
  2. Преобразовать в массив чисел с помощью Integer.valueOf () .
  3. Отсортировать массив.
  4. Объедините все это обратно в StringBuilder .
14
ответ дан 1 December 2019 в 06:03
поделиться

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

3
ответ дан 1 December 2019 в 06:03
поделиться

Итак, у вас есть строка, содержащая набор целых чисел, разделенных запятыми, которые вам нужно отсортировать, а затем вывести в строку? Попробуйте разделить - строку, проанализировать - целые числа, сортировать - получившийся массив, а затем соединить - результаты вместе

1
ответ дан 1 December 2019 в 06:03
поделиться

Bash ТАК мощный :-)

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

-2
ответ дан 1 December 2019 в 06:03
поделиться
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("[\\[ \\]]", "");

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

6
ответ дан 1 December 2019 в 06:03
поделиться

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

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

}

0
ответ дан 1 December 2019 в 06:03
поделиться

Альтернатива с использованием 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 );
    }
}
0
ответ дан 1 December 2019 в 06:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: