Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
排序字符串“;13,5,8,4,2,1,9“;Java中的升序为1,2,4,5,8,9,13_Java_Sorting - Fatal编程技术网

排序字符串“;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;i
    String 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]