java - topN排序问题求解。
问题描述
有个字符串数组,string[] str = {A,B,C,D,E,F,G,H};,数组分别对应一个整数数组,int[] a = {3,2,6,4,8,9,1,23};,类似于这样,对整数数组中的数从大到小排序,然后将整数数组对应的字符串数组按序输出,求解java代码的实现方式。
问题解答
回答1:你定义一个 Holder 类,用来保存 字符-数字 这个映射,然后对所有的 Holder,按照 Holder 中的数字从大到小排序,最后按序输出每个 Holder 的字符。
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;}@Overridepublic 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); }}
运行结果:
相关文章:
1. html5 - bootstrap修改样式的问题2. java - 如图,jsp页面的form中的action是怎么映射到这个位置的?为什么不写dynUser就可以映射到save?3. javascript - 清空Chrome缓存的疑问4. css - 关于HTML中width和height的疑问(这个提问的标题不好起)5. mysql - 求一个sql语句,比较简单。6. java - 接口中的成员变量怎么不是常量了?7. javascript - js数组键名为何不能用变量?我想像PHP那样使用变量作为关联数组键名该怎么做?8. javascript - 在 model里定义的 引用表模型时,model为undefined。9. HTML5表单必填属性设置自定义验证消息?10. docker images显示的镜像过多,狗眼被亮瞎了,怎么办?

网公网安备