Rumah  >  Soal Jawab  >  teks badan

java - topN排序问题求解。

有个字符串数组,string[] str = {A,B,C,D,E,F,G,H};,数组分别对应一个整数数组,int[] a = {3,2,6,4,8,9,1,23};,类似于这样,对整数数组中的数从大到小排序,然后将整数数组对应的字符串数组按序输出,求解java代码的实现方式。

阿神阿神2744 hari yang lalu497

membalas semua(1)saya akan balas

  • 天蓬老师

    天蓬老师2017-04-18 10:50:07

    Anda mentakrifkan kelas Pemegang untuk menyimpan pemetaan nombor aksara, kemudian mengisih semua Pemegang mengikut nombor dalam Pemegang daripada besar kepada kecil, dan akhirnya mengeluarkan aksara setiap Pemegang mengikut urutan.

    import java.util.Arrays;
    
    public class Test {
    
        static class Holder implements Comparable<Holder> {
    
            public int num;
            public String str;
    
            public Holder(String str, int num) {
                this.str = str;
                this.num = num;
            }
    
            @Override
            public int compareTo(Holder that) {
                return that.num - this.num; // 逆序排序
            }
    
        }
    
        public static void test(String[] strs, int[] nums) {
            if (strs.length != nums.length) {
                return;
            }
    
            Holder[] holders = new Holder[strs.length];
            for (int i = 0; i < strs.length; i++) {
                holders[i] = new Holder(strs[i], nums[i]);
            }
    
            Arrays.sort(holders);
    
            for (Holder holder : holders) {
                System.out.print(holder.str + " ");
            }
            System.out.println();
        }
    
        public static void main(String[] args) throws Exception {
            String[] strs = {"A", "B", "C", "D", "E", "F", "G", "H"};
            int[] a = {3, 2, 6, 4, 8, 9, 1, 23};
    
            test(strs, a);
        }
    }
    

    Hasil jalankan:

    balas
    0
  • Batalbalas