비교기는 가격 비교 함수를 위해 비교 ()와 equals ()의 두 가지 방법을 무시할 수있는 인터페이스입니다. NULL 인 경우 a, b, c, d, e, f, g, 즉 a, b, c, d, e, f, g와 같은 기본 요소 순서를 사용합니다. 물론 숫자에 대해서도 마찬가지입니다.
비교 (a, b) 방법 : 첫 번째 매개 변수에 따라 네거티브 정수, 0 또는 양의 정수를 반환합니다.
Equals (OBJ) 메소드 : 지정된 객체가 비교기 이고이 비교기와 동일한 종류의 경우에만 true를 반환합니다.
collections.sort의 두 번째 매개 변수 (list, new pricecomparator ()); int-type 값을 반환합니다.이 값은 플래그와 동일하여 목록을 정렬하는 순서로 정렬 메소드를 알려줍니다.
특정 구현 코드 방법은 다음과 같습니다.
서적 엔티티 클래스 :
패키지 com.tjcyjd.comparator; import java.text.decimalformat; import java.text.simpledateformat; java.util.GregorianCalendar 가져 오기; import java.util.iterator; Java.util.treemap import; / ** * 서적 엔티티 클래스 * * @author yjd * */ public class book 구현 비슷한 {// 객체 클래스에서 기본적으로 상속 된 책인 public int id; // public string 이름; // 이름 공개 이중 가격; // 가격 개인 문자열 저자; // 저자 공개 gregoriancalendar 캘린더; // 출판 날짜 public book () {this (0, "x", 0.0, New GregorianCalendar (), "); } public book (int id, 문자열 이름, 이중 가격, GregorianCalendar 캘린더, 문자열 저자) {this.id = id; this.name = 이름; this.price = 가격; this.calendar = 캘린더; this.author = 저자; } // 책 클래스 정보의 요구 사항을 충족시키기 위해 부모 클래스 객체에서 상속 된 메소드를 다시 작성하십시오. // 클래스 정보를 표시하는 문자열을 정의합니다. Decimalformat formatprice = new Decimalformat ( "0.00"); // 소수점 이하 두 가지 자리에 대한 형식 가격 showstr + = "/t" + formatprice.format (price); // 형식 price showstr + = "/t" + author; simpledateformat formatdate = new simpledateformat ( "yyyy 년 mm 달 dd 일"); showstr + = "/t" + formatdate.format (calendar.gettime ()); // 형식 시간 return showstr; // 반환 클래스 정보 문자열} public int compareto (object obj) {// 비슷한 인터페이스 서적의 방법 b = (책) obj; is.id -b.id; // 기본 정렬에 사용되는 책의 ID에 따라 크기를 비교} public static void main (String [] args) {Book B1 = New Book (10000, "Dream of the Red 챔버", 150.86, New Gregoriancalendar (2009, 01, 25), "Cao Xueqin, Gao E"); Book B2 = New Book (10001, "Three Kingdoms의 로맨스", 99.68, New Gregoriancalendar (2008, 7, 8), "Luo Guanzhong"); Book B3 = New Book (10002, "Water Margin", 100.8, New Gregoriancalendar (2009, 6, 28), "Shi Nai'an"); BOOK B4 = New Book (10003, "Western to the West", 120.8, New Gregoriancalendar (2011, 6, 8), "Wu Cheng'en"); Book B5 = New Book (10004, "Condor Heroes의 전설", 10.4, New Gregoriancalendar (2011, 9, 23), "Sohu"); Treemap tm = new Treemap (); tm.put (B1, New Integer (255)); tm.put (B2, New Integer (122)); tm.put (B3, New Integer (688)); tm.put (B4, New Integer (453)); tm.put (B5, New Integer (40)); 반복자 it = tm.keyset (). iterator (); 개체 키 = null, value = null; BB = NULL; while (it.hasnext ()) {key = it.next (); BB = (책) 키; value = tm.get (키); System.out.println (bb.toString () + "/t 인벤토리 :" + tm.get (key)); }}} 사용자 정의 비교기 및 테스트 클래스 :
패키지 com.tjcyjd.comparator; java.util.arraylist 가져 오기; java.util.collections import; import java.util.comparator; java.util.GregorianCalendar 가져 오기; import java.util.iterator; Java.util.list 가져 오기; 공개 클래스 usecomparator {public static void main (String args []) {list <book> list = new arraylist <book> (); // 배열 시퀀스 책 B1 = 새로운 책 (10000, "Dream of Red Mansions", 150.86, New Gregoriancalendar (2009, 01, 25), "Cao Xueqin, Gao E"); Book B2 = New Book (10001, "Three Kingdoms의 로맨스", 99.68, New Gregoriancalendar (2008, 7, 8), "Luo Guanzhong"); Book B3 = New Book (10002, "Water Margin", 100.8, New Gregoriancalendar (2009, 6, 28), "Shi Nai'an"); BOOK B4 = New Book (10003, "Western to the West", 120.8, New Gregoriancalendar (2011, 6, 8), "Wu Chengen"); Book B5 = New Book (10004, "Tianlong Baba", 10.4, New Gregoriancalendar (2011, 9, 23), "Sohu"); list.add (b1); list.add (b2); list.add (b3); list.add (b4); list.add (b5); // collections.sort (list); // 기본 비교기가 없습니다. System.out.println ( "배열 시퀀스의 요소 :"); MyPrint (목록); collections.sort (list, new pricecomparator ()); // 가격 시스템별로 정렬. MyPrint (목록); Collections.Sort (List, New CalendarComparator ()); // 시간별 System.out.println ( "Public static void myprint (list <book> list)에 의해 정렬 됨 {iterator it = list.iterator (); // 목록에서 모든 요소를 가로 지르기위한 ITERATOR를 가져옵니다. It.next ()); //이 요소 표시}} // 사용자 정의 비교기 : 책의 가격별로 정렬 된 pricecomparator emplications (object 객체 1, object2) {// 인터페이스 p1 = (book) 객체에서 메소드를 구현합니다. }} // 인터페이스 책 p1 = (Book) 객체를 구현합니다. (책) 대상 1; // 책을 캐스팅하면 p2 = (책) object2; p2.calendar.compareto를 반환합니다 (p1.calendar); }}}위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.