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 ""