Maison  >  Questions et réponses  >  le corps du texte

java - topN排序问题求解。

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

阿神阿神2744 Il y a quelques jours493

répondre à tous(1)je répondrai

  • 天蓬老师

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

    Vous définissez une classe Holder pour enregistrer le mappage caractère-numéro, puis triez tous les Holders en fonction des nombres dans le Holder, du plus grand au plus petit, et enfin affichez les caractères de chaque Holder dans l'ordre.

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

    Résultat de l'exécution :

    répondre
    0
  • Annulerrépondre