如何按升序对字符串"13,5,8,4,2,1,9"
进行排序,以获取1,2,4,5,8,9,13
?
答案 0 :(得分:27)
如果这些步骤中的任何一个导致您遇到困难,请更具体。
答案 1 :(得分:14)
String.split()
的项目数组。Integer.valueOf()
转换为数字数组。StringBuilder
。答案 2 :(得分:8)
作为一个班轮,使用Google Collections(根据Kevin的建议更新)
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);
}}))));
答案 3 :(得分:6)
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("[\\[ \\]]", "");
此解决方案使用:
java.util.Comparator
java.util.Arrays
sort
和toString
String
split
和replaceAll
答案 4 :(得分:3)
我会使用StringTokenizer来标记字符串,
解析值(使用Integer.parseInt),
然后使用Arrays.sort对结果进行排序
最后,重新创建字符串。
答案 5 :(得分:2)
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();
可能会有一些拼写错误,但我认为不是。另外,自己添加适当的导入=)
答案 6 :(得分:1)
所以你有一个包含逗号分隔的整数集的字符串,你需要排序然后输出到字符串?尝试split
- 字符串,parse
- 整数,sort
- 生成的数组,然后join
- 将结果放在一起
答案 7 :(得分:0)
好的,你可以尝试一下它在所有情况下的工作。
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;
}
}
答案 8 :(得分:0)
使用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 );
}
}
答案 9 :(得分:0)
如果您使用的是Java 8,则可以使用流进行排序:
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
如果要排序数组,也可以使用:
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]
这个想法与Jon Skeet的解释相同。
答案 10 :(得分:-1)
这是排序的一种方法。
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));
}
}
答案 11 :(得分:-1)
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);
}
}
}
答案 12 :(得分:-2)
Bash太强大了:-)
数字=“1,2,9,4,7,5”;对于$中的数字(echo“$ numbers”);回声“$ number”| tr -d“,”;完成|排序| tr“\ n”“,”; echo“”