类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 }

时间: 2024-10-17 22:35:02

类Collections与接口Comparator的相关文章

Collections+Iterator 接口 | Map+HashMap+HashTable+TreeMap |

Collections+Iterator 接口 1. Collections 是一个操作 Set.List 和 Map 等集合的工具类 Collections 中提供了大量方法对集合元素进行排序.查询和修改等操作,还提供了对集合对象设置不可变.对集合对象实现同步控制等方法 排序操作: reverse(List):反转 List 中元素的顺序 shuffle(List):对 List 集合元素进行随机排序 sort(List):根据元素的自然顺序对指定 List 集合元素按升序排序 sort(Li

类Collections的静态方法

类Collections的静态方法 此类完全由在 collection 上进行操作或返回 collection 的静态方法组成. 排序 static <T extends Comparable<? super T>>  void  sort(List<T> list) static <T>   void   sort(List<T> list, Comparator<? super T> c) 交换 static void   swa

Java之工具类Collections

总结 Collections 是一个操作 Set.List 和 Map 等集合的工具类 Collections 中提供了大量方法对集合元素进行排序.查询和修改等操作,还提供了对集合对象设置不可变.对集合对象实现同步控制等方法 实现方法 import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class Test3 { p

Java从零开始学二十四点(集合工具类Collections)

一.Collections简介 在集合的应用开发中,集合的若干接口和若干个子类是最最常使用的,但是在JDK中提供了一种集合操作的工具类 —— Collections,可以直接通过此类方便的操作集合 二.Collections类的常用方法及常量 No. 方法 类型 描述 1 public static final List EMPTY_LIST 常量 返回一个空的List集合 2 public static final Set EMPTY_SET 常量 返回空的Set集合 3 public sta

黑马程序员——工具类Collections的使用

工具类Collections的使用 import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; public class CollectionsDemos { public static void main(String[] args) { // TODO Auto-generated method stub ArrayList<String> al = new ArrayList

C#中的类属性和接口属性

类属性 类属性是类成员函数的另一种形式,它的主要任务是实现对数据的间接访问,属性的get块和set块的定义中必须明确指出是对什么数据进行访问.对于自动属性,编译器会自动创建对应的数据字段,并且实现属性的get块和set块. 接口属性 接口中可以定义属性,接口属性可以只拥有get块或set块,如果只指定了set或get访问,那么该接口属性表明,对于外部,它只允许这一种访问,这会对类实现接口属性时产生一种约束,即类中具体定义该接口属性时,其访问权限不能大于接口中指定的权限,虽然类中可以为该接口属性补

Java基础-接口.编写2个接口:InterfaceA和InterfaceB;在接口InterfaceA中有个方法void printCapitalLetter();在接口InterfaceB中有个方法void printLowercaseLetter();然 后写一个类Print实现接口InterfaceA和InterfaceB,要求 方法 实现输出大写英文字母表的功能,printLowerca

#34.编写2个接口:InterfaceA和InterfaceB:在接口InterfaceA中有个方法void printCapitalLetter():在接口InterfaceB中有个方法void printLowercaseLetter():然 后写一个类Print实现接口InterfaceA和InterfaceB,要求      方法 实现输出大写英文字母表的功能,printLowercaseLetter()方法实现输出小写英文 字母表的功能.再写一个主类E,在主类E的main方法中创建P

探Java多线程Thread类和Runnable接口之间的联系

首先复习一下Java多线程实现机制,Java实现多线程方法有如下这么几种: 1.继承了(extends)Thread类 2.实现了(implements)Runnable接口 也就是说  有如下两种情况 情况1: 继承Thread类.重写其方法run() .    然后new之.调用Start()方法 1 public class TestThread 2 { 3 private int i; 4 public static void main(String[] args) 5 { 6 // T

关于多个类实现同一个接口的相关资料

http://liusu.iteye.com/blog/136690 某一天,某一个需求修改完成之后,提交代码.我修改了一个接口,在接口文件中添加了一个方法,并且在实现类中实现.但运维同事编译时告诉我出错了,为什么呢,因为不知道谁在代码路径中把这个接口的实现类做了一个备份,我没有在备份文件中实现添加的方法,从而报错.在这个问题上,突然发现自己只是了解一个接口多个实现类,但是从来没有深入了解过,顾借此机会整理一些东西吧.欢迎补充 1.一个接口,多个类implements该接口 public cla