類Collections與接口Comparator
阿新 • • 發佈:2017-06-23
作者 class port rgs .com family java for 簡單
類Collections與接口Comparator的簡單使用
1 import java.util.ArrayList; 2 import java.util.Collections; 3 import java.util.Comparator; 4 import java.util.List; 5 6 public class TestCompare { 7 8 public static void main(String[] args) { 9 10 List<BookInfo> list = new ArrayList<BookInfo>();11 list.add(new BookInfo(1, "aa", "hskahs", 10)); 12 list.add(new BookInfo(14, "sw", "zxs", 40)); 13 list.add(new BookInfo(31, "as", "zx", 10)); 14 list.add(new BookInfo(24, "ds", "cds", 20)); 15 list.add(new BookInfo(5, "rfr", "cvb", 17)); 16 list.add(newBookInfo(20, "saa", "cdg", 100)); 17 list.add(new BookInfo(19, "cd", "def", 80)); 18 19 System.out.println("----------ID排序----------"); 20 Collections.sort(list, new BookInfoIDCompare()); 21 for (BookInfo bookInfo : list) { 22 System.out.println(bookInfo);23 } 24 25 System.out.println("----------名稱排序----------"); 26 27 28 Collections.sort(list, new BookInfoNameCompare()); 29 for (BookInfo bookInfo : list) { 30 System.out.println(bookInfo); 31 } 32 33 System.out.println("----------作者排序----------"); 34 35 36 Collections.sort(list, new BookInfoAuthorCompare()); 37 for (BookInfo bookInfo : list) { 38 System.out.println(bookInfo); 39 } 40 41 42 System.out.println("-------價格降序排序-------------"); 43 44 45 Collections.sort(list, new BookInfoPriceCompare()); 46 for (BookInfo bookInfo : list) { 47 System.out.println(bookInfo); 48 } 49 } 50 } 51 52 class BookInfoIDCompare implements Comparator<BookInfo> { 53 54 @Override 55 public int compare(BookInfo o1, BookInfo o2) { 56 57 return o1.getId() > o2.getId() ? 1 : (o1.getId() < o2.getId() ? -1 : 0); 58 } 59 60 } 61 62 class BookInfoNameCompare implements Comparator<BookInfo> { 63 64 @Override 65 public int compare(BookInfo o1, BookInfo o2) { 66 67 return o1.getName().compareTo(o2.getName()); 68 } 69 } 70 71 class BookInfoAuthorCompare implements Comparator<BookInfo> { 72 73 @Override 74 public int compare(BookInfo o1, BookInfo o2) { 75 76 return o1.getAuthor().compareTo(o2.getAuthor()); 77 } 78 } 79 80 class BookInfoPriceCompare implements Comparator<BookInfo> { 81 82 @Override 83 public int compare(BookInfo o1, BookInfo o2) { 84 return o1.getPrice() > o2.getPrice() ? -1 : (o1.getPrice() < o2.getPrice() ? 1 : 0); 85 } 86 } 87 88 class BookInfo { 89 private int id; 90 private String name; 91 private String author; 92 private int price; 93 94 public BookInfo(int id, String name, String author, int price) { 95 super(); 96 this.id = id; 97 this.name = name; 98 this.author = author; 99 this.price = price; 100 } 101 102 public BookInfo() { 103 super(); 104 } 105 106 public int getId() { 107 return id; 108 } 109 110 public void setId(int id) { 111 this.id = id; 112 } 113 114 public String getName() { 115 return name; 116 } 117 118 public void setName(String name) { 119 this.name = name; 120 } 121 122 public String getAuthor() { 123 return author; 124 } 125 126 public void setAuthor(String author) { 127 this.author = author; 128 } 129 130 public int getPrice() { 131 return price; 132 } 133 134 public void setPrice(int price) { 135 this.price = price; 136 } 137 138 @Override 139 public String toString() { 140 return "BookInfo [id=" + id + ", name=" + name + ", author=" + author + ", price=" + price + "]"; 141 } 142 143 }
類Collections與接口Comparator