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

如何使用数组中 png 的名称以两种不同的方式对数组进行排序

如何使用数组中 png 的名称以两种不同的方式对数组进行排序

神不在的星期二 2024-01-25 15:10:04
我制作了一个包含 8 个 PNG 文件的数组,例如命名为27.png. 我试图将它们显示在 a 中j.label并在它们之间交换,但它们需要按两个不同的事物进行排序。PNG 名称中的“2”表示它是第二便宜的商品,7 表示它是评分第七高的商品。所以34.png将是第三便宜的,评级为 4/8。我尝试过研究使用index.of,但我找不到在我的情况下使用它的方法。任何帮助将不胜感激,谢谢大家。
查看完整描述

2 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

public class Main {


    public static void main(String[] args) {


        String [] pngs = {"18.png","43.png", "27.png", "62.png", "71.png","34.png", "55.png", "86.png"};


        //this will sort by cheapest first

        java.util.Arrays.sort(pngs);

        printArray(pngs);


        //to sort by lowest rank first, swap digits, sort, re-swap digits

        swapFirstTwoDigits(pngs);

        java.util.Arrays.sort(pngs);

        swapFirstTwoDigits(pngs);

        printArray(pngs);



        //to sort by highest rank first, swap digits, sort, re-swap digits

        swapFirstTwoDigits(pngs);

        java.util.Arrays.sort(pngs,java.util.Collections.reverseOrder());

        swapFirstTwoDigits(pngs);

        printArray(pngs);


    }


    static void swapFirstTwoDigits(String[] array){

        for (int i = 0; i < array.length; i++) {

            String s = array[i];

            array[i] = ""+s.charAt(1)+s.charAt(0)+s.substring(2);

        }


    }



    static void printArray(String [] array){


        for (int i = 0; i < array.length; i++) {

            System.out.println(array[i]);

        }

        System.out.println("-------------------");


    }

}


查看完整回答
反对 回复 2024-01-25
?
浮云间

TA贡献1829条经验 获得超4个赞

如果将这些名称存储在列表中,则可以利用使用比较器的 List#sort 方法。

    List<String> names = Lists.newArrayList( "35.png", "27.png" );
    names.sort( Comparator.comparing( ( String o ) -> Integer.parseInt( o.substring( 0, 1 ) ) )
            .thenComparing( o -> Integer.parseInt( o.substring( 1, 2 ) ) ) );

如果将它们存储在其他集合中,则可以利用 Stream API 从集合中获取流,并使用相同的比较器对流进行排序


查看完整回答
反对 回复 2024-01-25
  • 2 回答
  • 0 关注
  • 82 浏览

添加回答

举报

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