Java: sort a String array, whose strings represent int

后端 未结 8 1161
北恋
北恋 2020-12-16 14:09

I have String[] array like

{\"3\",\"2\",\"4\",\"10\",\"11\",\"6\",\"5\",\"8\",\"9\",\"7\"}

I want to sort it in numerical ord

相关标签:
8条回答
  • 2020-12-16 14:54

    public class test1 {

    public static void main(String[] args) 
    {
        String[] str = {"3","2","4","10","11","6","5","8","9","7"};
        int[] a = new int[str.length];
        for(int i=0;i<a.length;i++)
        {
            a[i]=Integer.parseInt(str[i]);
        }
        Arrays.sort(a);
        for(int i=0;i<a.length;i++)
        {
            str[i]=String.valueOf(a[i]);
        }
    }
    

    }

    0 讨论(0)
  • 2020-12-16 14:58

    U can use sol-1 if it contains only numbers in string format.

    Solution-1: -

    String []arr = {"3","2","4","10","11","6","5","8","9","7"};
            Set<Integer> set = new TreeSet<Integer>();
            Arrays.sort(arr);
            for(String s:arr){
                System.out.print(s+"  ");
                set.add(Integer.parseInt(s));
            }
            System.out.println(set);
            Integer i = new Integer("4f");
            System.out.println(i);
    

    Solution-2:-

    String []arr = {"3","2","4","10","11","6","5","8","9","7","jgj","ek"};
            Set<Integer> intSet = new TreeSet<Integer>();
            Set<String> strSet = new TreeSet<String>();
            Arrays.sort(arr);
            for(String s:arr){
                try {
                    int i = Integer.parseInt(s);
                    intSet.add(i);
                } catch (NumberFormatException e) {
                    strSet.add(s);
                }
            }
            List<String> result = new ArrayList<String>();
            for(int val:intSet){
                result.add(val+"");
            }
            result.addAll(strSet);
            System.out.println(result);
        }
    

    Solution-3:-

    Write one CustomComparator class and pass it to the sort() method.

    public class CustomComparator implements Comparator<String>{
    
        @Override
        public int compare(String s1, String s2) {
            Integer i1=null;
            Integer i2=null;
            try {
                i1 = Integer.parseInt(s1);
            } catch (NumberFormatException e) {
            }
    
            try {
                i2 = Integer.parseInt(s2);
            } catch (NumberFormatException e) {
            }
    
            if(i1!=null && i2!=null){
                return i1.compareTo(i2);
            }else{
                return s1.compareTo(s2);
            }
        }
    
    }
    


    public static void main(){
    String []arr = {"3","2","4","10","11","6","5","8","9","7","jgj","ek"};
    Arrays.sort(arr, new CustomComparator());
            for(String s:arr){
                System.out.print(s+"  ");
            }
    }
    
    0 讨论(0)
提交回复
热议问题