java如何對(duì)不同的類對(duì)象進(jìn)行排序
問題描述
假設(shè)兩個(gè)類A,B有共同的屬性date,我要對(duì)兩個(gè)List<A>, List<B>, 按照date進(jìn)行排序,怎么做比較好?
我知道的方法是寫一個(gè)基類,然后A和B繼承這個(gè)基類,然后再調(diào)用Collections.sort()排序.
請(qǐng)問有沒有更好的辦法,或者是使用反射寫一個(gè)類似的方法?亦或是有現(xiàn)成的庫可以使用?
問題解答
回答1:使用上面你說的是較好的方法,1.可以利用java本身提供的api減少了代碼量,2.上面的方式在代碼風(fēng)格上也蠻好的。還有一種思路是將每A,B類的date提出來并與A,B對(duì)象本身建立關(guān)聯(lián),比如實(shí)現(xiàn)一個(gè)類Index,Index中有兩個(gè)屬性,date和A,B類對(duì)象的引用或者id,每個(gè)A,B類對(duì)象關(guān)聯(lián)一個(gè)Index對(duì)象,然后對(duì)Index對(duì)象排序,然后通過id找到對(duì)應(yīng)A或B的對(duì)象,同index對(duì)象一樣的順序,即排好序。
回答2:list.sort((l1,l2) -> l1.getDate().compareTo(l2.getDate()));回答3:
弄一個(gè)Base Class,A、B extends之
弄一個(gè)Interface,A、B implements之
弄一個(gè)List<Object>,然后sort之,Comparator里面需要強(qiáng)轉(zhuǎn)類型
弄一個(gè)Wrapper class,包裝A、B,然后放在List中,sort之
相關(guān)文章:
1. 測(cè)試自動(dòng)化html元素選擇器元素ID或DataAttribute [關(guān)閉]2. html5和Flash對(duì)抗是什么情況?3. 運(yùn)行python程序時(shí)出現(xiàn)“應(yīng)用程序發(fā)生異常”的內(nèi)存錯(cuò)誤?4. javascript - QQ第三方登錄的問題5. node.js - mongodb查找子對(duì)象的名稱為某個(gè)值的對(duì)象的方法6. 利用IPMI遠(yuǎn)程安裝centos報(bào)錯(cuò)!7. 在mac下出現(xiàn)了兩個(gè)docker環(huán)境8. spring-mvc - spring-session-redis HttpSessionListener失效9. java - Spring boot 讀取 放在 jar 包外的,log4j 配置文件,系統(tǒng)有創(chuàng)建日志文件,不寫入日志信息。10. 正在使用electron和node.js做桌面應(yīng)用,需要實(shí)時(shí)監(jiān)聽是否有網(wǎng)絡(luò)連接,node或者electron是否可以做到

網(wǎng)公網(wǎng)安備