Android中的排序,颠倒。

本文介绍了一个使用Java实现的图书类,该类实现了Comparable接口并按ID排序。此外,还展示了如何创建图书对象,将其添加到集合中,并通过自定义比较器按价格和出版日期进行排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,创建一个实体类对象,并且实现Comparable 接口

public class Book implements Comparable {
public int id;// 编号 
public String name;// 名称 
public double price; // 价格 
private String author;// 作者 
public GregorianCalendar calendar;// 出版日期 

public Book() { 
this(0, "X", 0.0, new GregorianCalendar(), ""); 
} 

public Book(int id, String name, double price, GregorianCalendar calender, 
String author) { 
this.id = id; 
this.name = name; 
this.price = price; 
this.calendar = calender; 
this.author = author; 
}

@Override
public int compareTo(Object obj) {
Book b = (Book) obj; 
return this.id - b.id; // 按书的id比较大小,用于默认排序 
} 

},

2,创建对象,添加到集合中,再排序,打印出来。

public class UseCompartor {

public static void main(String args[]) { 
List<Book> list = new ArrayList<Book>(); // 数组序列 
Book b1 = new Book(10000, "红楼梦", 150.86, new GregorianCalendar(2009, 
01, 25), "曹雪芹、高鄂"); 
Book b2 = new Book(10001, "三国演义", 99.68, new GregorianCalendar(2008, 7, 
8), "罗贯中 "); 
Book b3 = new Book(10002, "水浒传", 100.8, new GregorianCalendar(2009, 6, 
28), "施耐庵 "); 
Book b4 = new Book(10003, "西游记", 120.8, new GregorianCalendar(2011, 6, 
8), "吴承恩"); 
Book b5 = new Book(10004, "天龙八部", 10.4, new GregorianCalendar(2011, 9, 
23), "搜狐"); 
list.add(b1); 
list.add(b2); 
list.add(b3); 
list.add(b4); 
list.add(b5); 
// Collections.sort(list); //没有默认比较器,不能排序 
System.out.println("数组序列中的元素:"); 
myprint(list); 
Collections.sort(list, new PriceComparator()); // 根据价格排序 
System.out.println("按书的价格排序:"); 
myprint(list); 
Collections.sort(list, new CalendarComparator()); // 根据时间排序 
//把顺序颠倒下
Collections.reverse(list);
System.out.println("按书的出版时间排序:"); 
myprint(list); 
} 

// 自定义方法:分行打印输出list中的元素 
public static void myprint(List<Book> list) { 
Iterator it = list.iterator(); // 得到迭代器,用于遍历list中的所有元素 
while (it.hasNext()) {// 如果迭代器中有元素,则返回true 
System.out.println("\t" + it.next());// 显示该元素 
} 
} 

// 自定义比较器:按书的价格排序 
static class PriceComparator implements Comparator { 
public int compare(Object object1, Object object2) {// 实现接口中的方法 
Book p1 = (Book) object1; // 强制转换 
Book p2 = (Book) object2; 
return new Double(p1.price).compareTo(new Double(p2.price)); 
} 
} 

// 自定义比较器:按书出版时间来排序 
static class CalendarComparator implements Comparator { 
public int compare(Object object1, Object object2) {// 实现接口中的方法 
Book p1 = (Book) object1; // 强制转换 
Book p2 = (Book) object2; 
return p2.calendar.compareTo(p1.calendar); 
} 
} 

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值