不废话了, 直接给大家贴代码了。
คำศัพท์คลาส {String str; ID int; คำศัพท์สาธารณะ (String str, int id) {this.str = str; this.id = id; } public String toString () {return str+""+id; }} คลาส hesterm ใช้เปรียบเทียบ {string str; ID int; หน้าผาสาธารณะ (String str, int id) {this.str = str; this.id = id; } public int compereto (Object O) {return ((shert) o) .id - id; } public String toString () {return str+""+id; }} // Method1: การดำเนินการอย่างชัดเจนการเปรียบเทียบคลาส TermComparator ใช้เครื่องเปรียบเทียบ {INT สาธารณะเปรียบเทียบ (Object O1, Object O2) {return ((คำ) O1) .ID - ((คำ) O2) .ID; }} คลาสสาธารณะ T1 { / ** * @param args * / โมฆะคงที่สาธารณะหลัก (สตริง [] args) {// todo วิธีการที่สร้างขึ้นอัตโนมัติ stub // arraylist <integer> arr = New ArrayList <integer> (อาร์เรย์ aslist (3,1,3,7,8,0)); // // collections.sort (arr, comparator ใหม่ () {// // public int Compare (Object O1, Object O2) {// ส่งคืน Double ใหม่ ((จำนวนเต็ม) O1). compareto (ใหม่คู่ ((จำนวนเต็ม) O2)); // method1 รายการ <sterm> ls = new ArrayList <Serm> (); Ls.Add (คำศัพท์ใหม่ ("A", 1)); Ls.Add (คำศัพท์ใหม่ ("B", 5)); Ls.Add (คำศัพท์ใหม่ ("C", 2)); Ls.Add (คำศัพท์ใหม่ ("D", 2)); Ls.Add (คำศัพท์ใหม่ ("E", 3)); Ls.Add (คำศัพท์ใหม่ ("F", 0)); collections.sort (ls, termcomparator ใหม่ ()); System.out.println (ls); // [f 0, a 1, c 2, d 2, e 3, b 5] // method2: anonymous ascolents collections.sort (ls, ตัวเปรียบเทียบใหม่ () {public int เปรียบเทียบ (Object O1, Object O2) {return ((คำศัพท์) O2) .ID - ((คำศัพท์) O1) .ID;}}); System.out.println (ls); // [b 5, e 3, c 2, d 2, a 1, f 0] // method3: อินสแตนซ์ตัวเปรียบเทียบเทมเพลตเปรียบเทียบ <term> termcmp = new comparator <merm> ( ) {public int Compare (คำ 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: องค์ประกอบใช้รายการที่เทียบเท่า <sterm> lss = new ArrayList <Sterm> () ; LSS.Add (ใหม่ก่อนหน้า ("A", 1)); LSS.Add (ใหม่ก่อนหน้า ("B", 5)); LSS.Add (ใหม่ reterm ("C", 2)); LSS.Add (ใหม่ reterm ("D", 2)); LSS.Add (ใหม่ก่อนหน้า ("E", 3)); LSS.Add (ใหม่ hesterm ("f", 0)); collections.sort (LSS); System.out.println (lss); // [b 5, e 3, c 2, d 2, a 1, f 0]}}Prioriyqueue 的用法和上述的排序类似, 有三种方法:
คลาส WordFreq ใช้การเปรียบเทียบ {สตริงสาธารณะ wd; สาธารณะ int freq; Public WordFreq (String Wd, int freq) {this.wd = wd; this.freq = freq; } public int compereto (Object O) {return ((wordfreq) o) .freq - freq; } สตริงสาธารณะ toString () {return wd+""+freq; }} คลาสสาธารณะ testt {โมฆะคงที่สาธารณะหลัก (String [] args) {// todo วิธีการที่สร้างอัตโนมัติ stub priorityQueue <WordFreq> pq = ใหม่ priorityQueue <WordFreQ> (); pq.offer (ใหม่ WordFreq ("AAA", 3)); pq.offer (ใหม่ WordFreq ("BBB", 4)); pq.offer (ใหม่ WordFreq ("CCC", 1)); ในขณะที่ (pq.peek ()! = null) {system.out.println (pq.poll ()); } // 从大到小输出}}注意,
สำหรับ (wordfreq wf: pq) {system.out.println (wf);}并不保证遍历的有序
如果รายการ <String> ls 进行排序的话, 不需要写 comparator, 因为สตริง本身有 compareto 的实现。