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);
}
}
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.
Résultat de l'exécution :