java - topN排序問題求解。
問題描述
有個(gè)字符串?dāng)?shù)組,string[] str = {A,B,C,D,E,F,G,H};,數(shù)組分別對應(yīng)一個(gè)整數(shù)數(shù)組,int[] a = {3,2,6,4,8,9,1,23};,類似于這樣,對整數(shù)數(shù)組中的數(shù)從大到小排序,然后將整數(shù)數(shù)組對應(yīng)的字符串?dāng)?shù)組按序輸出,求解java代碼的實(shí)現(xiàn)方式。
問題解答
回答1:你定義一個(gè) Holder 類,用來保存 字符-數(shù)字 這個(gè)映射,然后對所有的 Holder,按照 Holder 中的數(shù)字從大到小排序,最后按序輸出每個(gè) 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); }}
運(yùn)行結(jié)果:
相關(guān)文章:
1. javascript - 前端開發(fā) 本地靜態(tài)文件頻繁修改,預(yù)覽時(shí)的緩存怎么解決?2. javascript - jQuery each 方法第三個(gè)參數(shù)args 如何解釋?3. css3的背景圖片屬性有沒有把圖中這塊藍(lán)框區(qū)域(275*230)完整放在60*50區(qū)域?怎么寫呢4. android - 優(yōu)酷的安卓及蘋果app還在使用flash技術(shù)嗎?5. javascript - js中遞歸與for循環(huán)同時(shí)發(fā)生的時(shí)候,代碼的執(zhí)行順序是怎樣的?6. java - new + 類名,一定需要申明一個(gè)對象嗎?7. 新手 - Python 爬蟲 問題 求助8. mysql數(shù)據(jù)庫每次查詢是一條線程嗎?9. python - linux怎么在每天的凌晨2點(diǎn)執(zhí)行一次這個(gè)log.py文件10. 如何分別在Windows下用Winform項(xiàng)模板+C#,在MacOSX下用Cocos Application項(xiàng)目模板+Objective-C實(shí)現(xiàn)一個(gè)制作游戲的空的黑窗口?
