排序字符串“;13,5,8,4,2,1,9“;Java中的升序为1,2,4,5,8,9,13
如何对字符串排序字符串“;13,5,8,4,2,1,9“;Java中的升序为1,2,4,5,8,9,13,java,sorting,Java,Sorting,如何对字符串“13,5,8,4,2,1,9”进行升序排序,以获得1,2,4,5,8,9,13 使用String.Split()将其拆分为项目数组 使用Integer.valueOf()转换为数字数组 对数组进行排序 将其全部连接回一个StringBuilder 那么您有一个字符串,其中包含一组逗号分隔的整数,您需要对这些整数进行排序,然后将其输出为字符串?尝试split-ting字符串,parse-ing整数,sort-ing结果数组,然后join-ing结果在一起我将使用StringToken
“13,5,8,4,2,1,9”
进行升序排序,以获得1,2,4,5,8,9,13
String.Split()
将其拆分为项目数组Integer.valueOf()
转换为数字数组StringBuilder
那么您有一个字符串,其中包含一组逗号分隔的整数,您需要对这些整数进行排序,然后将其输出为字符串?尝试
split
-ting字符串,parse
-ing整数,sort
-ing结果数组,然后join
-ing结果在一起我将使用StringTokenizer标记字符串,解析值(使用Integer.parseInt),
然后使用array.sort对结果进行排序。
最后,重新创建字符串。
- 用逗号分隔字符串
- 将每个子字符串解析为整数
- 对结果集合进行排序
- 如果需要将结果转换为字符串(不清楚),请将每个整数转换回字符串,并用逗号将它们连接在一起
如果这些步骤中的任何一个给您带来了困难,请具体说明。这是排序的一种方法
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));
}
}
package com.java;
导入java.util.ArrayList;
导入java.util.Collections;
公共b级{
公共静态void main(字符串[]args){
//创建ArrayList对象
ArrayList ArrayList=新的ArrayList();
//向Arraylist添加元素
arrayList.添加(“9”);
arrayList.添加(“3”);
arrayList.添加(“5”);
arrayList.添加(“2”);
arrayList.添加(“4”);
Collections.sort(arrayList);
//ArrayList的显示元素
System.out.println(“按升序排序后的ArrayList元素:”);
对于(int i=0;iString str=“13,5,8,4,2,1,9”;
StringTokenizer令牌=新的StringTokenizer(“,”);
ArrayList ints=新的ArrayList();
for(字符串标记:标记)
add(Integer.parseInt(token));
收集.排序(ints);
字符串排序器=”;
对于(inti=0;i+10)
sortedStr+=ints.lastElement();
可能有一些拼写错误,但我认为没有。另外,使用Google Collections(根据Kevin的建议更新)将适当的导入添加为一行
Bash非常强大:-)
String s=“13,5,8,4,2,1,9”;
字符串[]arr=s.split(“,”);
sort(arr,新的比较器(){
@重写公共整数比较(字符串s1、字符串s2){
返回Integer.parseInt(s1)-Integer.parseInt(s2);
}
});
s=Arrays.toString(arr.replaceAll(“[\\[\\]]”,“”);
此解决方案使用:
sort
和toString
split
和replaceAll
好的,你可以试试这个,它在任何情况下都能工作
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;
}
package com.java;
导入java.util.*;
公共类光盘
{
公共静态void main(字符串s[]
{
收藏;
列表l=排序;
System.out.println(“\n字符串排序列表…”);
对于(int i=0;i
}使用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 );
}
}
公共类排序字符串{
公共静态void main(字符串[]args){
//使用扫描仪读取整数。。。
扫描仪扫描仪=新扫描仪(“13,5,8,4,2,1,9”)。使用分隔符(“,”);
//将它们放入整数列表中
列表=新的ArrayList();
while(scanner.hasNextInt()){
添加(scanner.nextInt());
}
//然后分类
集合。排序(列表);
系统输出打印项次(列表);
}
}
类拆分str
{
公共静态void main(字符串参数[])
{
尝试
{
字符串str=args[0]+“,“+args[1];//将两个字符串合并为一个字符串
字符串sArr[]=str.split(“,”);
int slen=长度;
int iArr[]=新int[slen];
内部温度;
对于(int i=0;iJava 8+
如果您使用的是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]
想法与解释相同。StringTokenizer是一个遗留类,出于兼容性原因保留了它,尽管新代码中不鼓励使用它。建议任何寻求此功能的人使用String的拆分方法或java.util.regex包。我将使用StringBuilder;无需承担开销这里的线程同步。谢谢提示,@extranon。我已经更改了它。+1用于提及方法名称;这是最好的答案,最有可能导致提问者编写自己的惯用代码。@c0mrade他没有。他演示排序。@extranon我知道他没有。这就是我问的原因,这家伙可能正在寻找其他排序方法有时..@Sanjeev-排序字符串不适用于此问题。使用问题中给出的数字,此代码将返回11324589
@Sanjeev-您的程序没有达到要求的结果。此问题的9次投票?严格地说,如果您希望最后有13次投票(而不是1到2次投票)那你是按数字排序而不是按字母排序-1糟糕/
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("[\\[ \\]]", "");
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;
}
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 );
}
}
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);
}
}
}
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]