java對(duì)ArrayList排序代碼示例
不廢話了,直接給大家貼代碼了。
class term { String str; int id; public term(String str, int id) { this.str = str; this.id = id; } public String toString() { return str+" "+id; } } class sterm implements Comparable{ String str; int id; public sterm(String str, int id) { this.str = str; this.id = id; } public int compareTo(Object o) { return ((sterm)o).id - id; } public String toString() { return str+" "+id; } } //method1: explicit implements Comparator class termComparator implements Comparator { public int compare (Object o1, Object o2) { return ((term)o1).id - ((term)o2).id; } } public class t1 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub // ArrayList<Integer> arr = new ArrayList<Integer>( Arrays.asList(3,1,3,7,8,0)); // // Collections.sort(arr, new Comparator(){ // // public int compare(Object o1, Object o2){ // return new Double((Integer)o1).compareTo(new Double ((Integer)o2)); // } // }); //method1 List<term> ls = new ArrayList<term>(); ls.add(new term("a",1)); ls.add(new term("b",5)); ls.add(new term("c",2)); ls.add(new term("d",2)); ls.add(new term("e",3)); ls.add(new term("f",0)); Collections.sort(ls, new termComparator()); System.out.println(ls);//[f 0, a 1, c 2, d 2, e 3, b 5] //method2: anonymous implements Collections.sort(ls, new Comparator(){ public int compare(Object o1, Object o2){ return ((term)o2).id - ((term)o1).id; } }); System.out.println(ls);//[b 5, e 3, c 2, d 2, a 1, f 0] //method3:instantiate a Comparator template Comparator<term> termCmp = new Comparator<term>() { public int compare(term t1, term t2) { return t1.id - t2.id; } }; Collections.sort(ls, termCmp); System.out.println(ls);//[f 0, a 1, c 2, d 2, e 3, b 5] //method4:element implements Comparable List<sterm> lss = new ArrayList<sterm>(); lss.add(new sterm("a",1)); lss.add(new sterm("b",5)); lss.add(new sterm("c",2)); lss.add(new sterm("d",2)); lss.add(new sterm("e",3)); lss.add(new sterm("f",0)); Collections.sort(lss); System.out.println(lss);//[b 5, e 3, c 2, d 2, a 1, f 0] } }
PrioriyQueue的用法和上述的排序類似,有三種方法:
class WordFreq implements Comparable{ public String wd; public int freq; public WordFreq(String wd, int freq) { this.wd = wd; this.freq = freq; } public int compareTo(Object o) { return ((WordFreq)o).freq - freq; } public String toString() { return wd+" "+freq; } } public class testt { public static void main(String[] args) { // TODO Auto-generated method stub PriorityQueue<WordFreq> pq = new PriorityQueue<WordFreq>(); pq.offer(new WordFreq("aaa", 3)); pq.offer(new WordFreq("bbb", 4)); pq.offer(new WordFreq("ccc",1)); while(pq.peek() != null) { System.out.println(pq.poll()); }//從大到小輸出 } }
注意,
for (WordFreq wf : pq) { System.out.println(wf); }
并不保證遍歷的有序
如果List<String> ls 進(jìn)行排序的話,不需要寫Comparator, 因?yàn)镾tring本身有compareTo的實(shí)現(xiàn)。
相關(guān)文章
Spring多線程通過(guò)@Scheduled實(shí)現(xiàn)定時(shí)任務(wù)
這篇文章主要介紹了Spring多線程通過(guò)@Scheduled實(shí)現(xiàn)定時(shí)任務(wù),@Scheduled?定時(shí)任務(wù)調(diào)度注解,是spring定時(shí)任務(wù)中最重要的,下文關(guān)于其具體介紹,需要的小伙伴可以參考一下2022-05-05java 使用poi 導(dǎo)入Excel數(shù)據(jù)到數(shù)據(jù)庫(kù)的步驟
這篇文章主要介紹了java 使用poi 導(dǎo)入Excel 數(shù)據(jù)到數(shù)據(jù)庫(kù)的步驟,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下2020-12-12java中for和forEach的速度比較實(shí)例Demo
for循環(huán)中的循環(huán)條件中的變量只求一次值,而foreach語(yǔ)句是java5新增,在遍歷數(shù)組、集合的時(shí)候,foreach擁有不錯(cuò)的性能,這篇文章主要給大家介紹了關(guān)于java中for和forEach速度比較的相關(guān)資料,需要的朋友可以參考下2021-08-08Java實(shí)戰(zhàn)項(xiàng)目 醫(yī)院預(yù)約掛號(hào)系統(tǒng)
本文是一個(gè)Java語(yǔ)言編寫的實(shí)戰(zhàn)項(xiàng)目,是一個(gè)醫(yī)院預(yù)約掛號(hào)系統(tǒng),主要用到了jdbc+jsp+mysql+ajax等技術(shù),技術(shù)含量比較高,感興趣的童鞋跟著小編往下看吧2021-09-09Java套接字(Socket)網(wǎng)絡(luò)編程入門
這篇文章主要介紹了Java套接字(Socket)網(wǎng)絡(luò)編程入門,Socket可以理解為是對(duì)TCP/IP協(xié)議的抽象,需要的朋友可以參考下2015-10-10Java 字符串轉(zhuǎn)float運(yùn)算 float轉(zhuǎn)字符串的方法
今天小編就為大家分享一篇Java 字符串轉(zhuǎn)float運(yùn)算 float轉(zhuǎn)字符串的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07