为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

手掌心 2023-01-05 10:16:39

我一直看到的是字符串/整数数组列表的排序。我正在寻找的是如何对数字进行排序。例如,我有一个190格式,我希望它排序为019.任何帮助表示赞赏,谢谢!



查看完整描述

7 回答

?
哔哔one

TA贡献1611条经验 获得超1个赞

你可以这样做:


   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


查看完整回答
反对 回复 2023-01-05
?
慕的地6264312

TA贡献1590条经验 获得超6个赞

您可以将您的 int 转换为一个 String 并拆分成一个数组,接下来只需对流进行排序并加入一个 String。


String[] number = "190".split("");


String list =  Stream.of(number).sorted().collect(Collectors.joining());


System.out.println(list); //Output: 019


查看完整回答
反对 回复 2023-01-05
?
长风秋雁

TA贡献1546条经验 获得超7个赞

您可以使用号码的数字创建一个列表并对该列表进行排序。


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;*/

}


查看完整回答
反对 回复 2023-01-05
?
炎炎设计

TA贡献1559条经验 获得超3个赞

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

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

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

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


查看完整回答
反对 回复 2023-01-05
?
蓝山帝景

TA贡献1606条经验 获得超7个赞

有很多方法可以实现这一目标。这是一个:


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();

而且,作为将(我认为)在 Java 7 中工作的单行代码(不是生产代码,但很有趣)...


final String sorted = Arrays.toString(new PriorityQueue<>(Arrays.asList("190".split("")))

    .toArray(new String[0]))

    .replaceAll("\\W+", "");


查看完整回答
反对 回复 2023-01-05
?
潇湘沐

TA贡献1561条经验 获得超6个赞

   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


查看完整回答
反对 回复 2023-01-05
?
胡子哥哥

TA贡献1578条经验 获得超6个赞

如果你使用这个,你应该小心:

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

输出将是 19 而不是 019


查看完整回答
反对 回复 2023-01-05

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信