首页 > 代码库 > 类Collections与接口Comparator

类Collections与接口Comparator

类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(new BookInfo(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