有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何在java 安卓中对数字进行排序?

我一直看到的是字符串/整数数组列表的排序。我要找的是如何对数字进行排序。例如,我有一个190格式,我希望它排序为019.任何帮助都非常感谢,谢谢


共 (6) 个答案

  1. # 1 楼答案

    您可以将int转换为字符串并拆分为数组,接下来只需对流进行排序并加入单个字符串

    String[] number = "190".split("");
    
    String list =  Stream.of(number).sorted().collect(Collectors.joining());
    
    System.out.println(list); //Output: 019
    
  2. # 2 楼答案

    您可以这样做:

       package test;
    
        public class Test2 {
    
            public static void main(String[] args) throws Exception {
                String number = "153004";
                String sorted = sortStringNumbers(number);
                System.out.println(sorted);
            }
    
            private static String sortStringNumbers(String numbersString) {
                return numbersString.chars().mapToObj(c -> Character.toString((char)c)).sorted().collect(Collectors.joining());
            }
    
        }
    

    输出:

    001345

  3. # 3 楼答案

    实现这一目标的方法很多。这里有一个:

    final String sorted = "190".chars()
        .sorted()
        .mapToObj(c -> Character.valueOf((char)c).toString())
        .collect(Collectors.joining())
    

    final String sorted = "190".chars()
        .sorted()
        .collect(StringBuilder::new, (sb, c) -> sb.append((char) c), StringBuilder::append)
        .toString();
    

    而且,作为一个(我认为)可以在Java7中工作的单行程序(不是生产代码,但很有趣)

    final String sorted = Arrays.toString(new PriorityQueue<>(Arrays.asList("190".split("")))
        .toArray(new String[0]))
        .replaceAll("\\W+", "");
    
  4. # 4 楼答案

    更新@dan1st answer,以获得所需结果:

            List<Integer> nums = new ArrayList<>();
            String total = "";
            for( int num = 190; num>0; num/=10 ){
                nums.add(num%10);
            }
            Collections.sort(nums);
            for (Integer x : nums) {
                total += x.toString();
            }
            Integer finalResult = Integer.parseInt(total);
            Log.i(TAG,"=== finalResult  "+ finalResult);
            O/P : 019
    
  5. # 5 楼答案

    您可以创建一个包含数字的列表,并对该列表进行排序

    List<Integer> nums=new ArrayList<>();
    for(int num=toSort;num>0;num/=10){
        nums.add(num%10);
    }
    Collections.sort(nums);
    String result="";//If you want the result to be a integer (e.g. 190 will convert into 19 and not 019), change this to int result=0;
    for(Integer num:nums){
        result+=num.intValue();
        /*int:
        result+=num.intValue();
        result×=10;*/
    }
    
  6. # 6 楼答案

    根据我对你的问题的理解,你正在尝试对整数中的数字进行排序。这可以通过转换为字符,排序,然后返回结果来完成。请注意,对于负数,这将失败

    fun sortInt(int: Int): Int =
            int.toString()
                    .toCharArray()
                    .sorted()
                    .joinToString("")
                    .toInt()
    

    编辑:现在这也适用于0位数

    fun sortInt(int: Int): String =
            int.toString()
                    .toCharArray()
                    .sorted()
                    .joinToString("")