设计Book类,要求:1)Book类的成员属性包括:书名name(String类型)、出版日期publishDate(Date类型)、定价price(double型);2)为Book对象提供按出版日期、价格排序的两种方式,且能够满足测试程序代码中的输入输出要求(注意代码注释中的说明)。其中,类BookComparatorByPrice的排序功能是:将一组Book对象按照价格升序排序,如果价格相同,则按照书名字母顺序排列;类BookComparatorByPubDate的排序功能是:将一组Book对象按照出版日期降序排序。

裁判测试程序样例:

public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);Book[] books = new Book[4];//1. 从键盘接收用户输入的4本书的名称(仅有英文字符构成)、出版日期(格式:1998-10-09)、价格,生成Book对象,构造包含4本书的数组for(int i=0;i<4;i++){String name = scan.next();String date_str = scan.next();Date date = null;//将键盘录入的日期字符串转换为DateSimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");try {date = sdf.parse(date_str);} catch (ParseException e) {System.out.println("日期格式有误");;}double price = Double.parseDouble(scan.next());Book book = new Book(name, date, price);books[i] = book;}//2.将books按照出版日期降序排序;然后输出booksArrays.sort(books, new BookComparatorByPubDate());for(Book book:books){System.out.println(book);}//3.将books按照价格升序排序,如果价格相同,则按照书名字母顺序排列。然后输出booksArrays.sort(books, new BookComparatorByPrice());for(Book book:books){System.out.println(book);}scan.close();}}/* 请在这里填写答案 */

输入样例:

Java
2011-08-01
29
Python
2014-01-01
48
C
2004-09-08
17.5
DataBase
2012-09-17
17.5

输出样例:

书名:Python,定价:48.0
书名:DataBase,定价:17.5
书名:Java,定价:29.0
书名:C,定价:17.5
书名:C,定价:17.5
书名:DataBase,定价:17.5
书名:Java,定价:29.0
书名:Python,定价:48.0

通过代码:

class Book{private String name;private Date publishDate;private double price;public Book(String name, Date publishDate, double price) {this.name = name;this.publishDate = publishDate;this.price = price;}public String getName() {return name;}public Date getPublishDate() {return publishDate;}public double getPrice() {return price;}@Overridepublic String toString() {return "书名:" + name + ",定价:" + price;}}class BookComparatorByPubDate implements Comparator{@Overridepublic int compare(Object o1, Object o2) {Book b1 = (Book) o1;Book b2 = (Book) o2;return b2.getPublishDate().compareTo(b1.getPublishDate());}}class BookComparatorByPrice implements Comparator{@Overridepublic int compare(Object o1, Object o2) {Book b1 = (Book) o1;Book b2 = (Book) o2;if(b1.getPrice() == b2.getPrice()) {return b1.getName().compareTo(b2.getName());}else {return b1.getPrice() < b2.getPrice() ? -1 : 1;}}}

6-23 sdust-Java-可实现多种排序的Book类相关推荐

  1. 6-23 sdust-Java-可实现多种排序的Book类 (20 分)

    6-23 sdust-Java-可实现多种排序的Book类 (20 分) 设计Book类,要求:1)Book类的成员属性包括:书名name(String类型).出版日期publishDate(Date ...

  2. 6-3 sdust-Java-可实现多种排序的Book类 (20 分)

    6-3 sdust-Java-可实现多种排序的Book类 (20 分) 设计Book类,要求: 1)Book类的成员属性包括:书名name(String类型).出版日期publishDate(Date ...

  3. 山科大 6-1 sdust-Java-可实现多种排序的Book类 (20 分)(18 软件 期中考试函数1)

    设计Book类,要求:1)Book类的成员属性包括:书名name(String类型).出版日期publishDate(Date类型).定价price(double型):2)为Book对象提供按出版日期 ...

  4. R6-4 sdust-Java-可实现多种排序的Book类

    设计Book类,要求:1)Book类的成员属性包括:书名name(String类型).出版日期publishDate(Date类型).定价price(double型):2)为Book对象提供按出版日期 ...

  5. OJ sdust Java记录

    6-1 sdust-Java-可实现多种排序的Book类 (20 分) 设计Book类,要求:1)Book类的成员属性包括:书名name(String类型).出版日期publishDate(Date类 ...

  6. Java ArrayList的不同排序方法

    由于其功能性和灵活性,ArrayList是 Java 集合框架中使用最为普遍的集合类之一.ArrayList 是一种 List 实现,它的内部用一个动态数组来存储元素,因此 ArrayList 能够在 ...

  7. Java数组与八大排序

    文章目录 浅谈数组 数组初始化 知识捡漏静态初始化写法 数组操作:反转 二维数组 数组的练习:根据数组元素查找该元素第一次在数组中出现的索引 方法1:挨个遍历查找法 方法2:二分查找法 二 数组常见的 ...

  8. Java数据结构第一讲-排序算法

    常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构) 数据结构和算法作为程序员的基本功,一定得稳扎稳打的学习,我们常见的框架底层就是各类数据 ...

  9. java的arraylist_Java ArrayList排序的3种方法

    首页 > 基础教程 > 集合框架 > ArrayList类 Java ArrayList排序的3种方法 1. 使用Collections.sort()方法进行排序 ArrayList ...

最新文章

  1. java安全插件_如何安全地实现Java插件安全性?
  2. 为什么要学python语言_我们为什么要学习Python语言?
  3. android device monitor命令行窗口在哪里_Vulkan在Android使用Compute shader
  4. 【数据结构与算法】之电话号码键盘的字母组合算法
  5. [java]ArrayList的介绍
  6. root cause of exception single deletion failure
  7. js中遍历注册事件时索引怎么获取
  8. Bootstrap 表单的动作按钮
  9. 城南云计算中心项目纳入国家储备库
  10. python入门实践19章_求助贴,python编程才能够入门到实践 第19章 19.2.2 代码出错
  11. 图片相似度识别在线_图片相似度计算的几种方法
  12. 离散数学及其应用(第六版) 习题
  13. 批处理之for /r
  14. ASK、OOK、FSK、GFSK 学习
  15. python学习线路图
  16. Linux下 Spring Boot 上传找不到临时目录, 出现500错误
  17. 服务器两广豪杰维护,逆水寒11月22日更新到几点 世界boss即将掉落逆水之寒
  18. 理解ES6中的暂时死区(TDZ)
  19. 按键(独立按键、矩阵键盘)——附带程序
  20. Ubuntu20.04实时显示CPU、内存、网速

热门文章

  1. PHP 蒙太奇马赛克拼图,AndreaMosaic制作一幅马赛克拼图
  2. 01_安卓APP开发流程概览
  3. Python笔记_07_列表的相关操作_列表相关函数_深浅拷贝_字典相关函数_集合相关函数_冰冻集合
  4. 根据视频URL解析视频信息(本地|网络)
  5. 互联网/计算机 校园招聘信息大全!
  6. MAC OS下免费下载YouTube
  7. 【渝粤教育】国家开放大学2019年春季 0777-22T市场开发与营销推广 参考试题
  8. 基于莱维飞行和随机游动策略的灰狼算法-附代码
  9. 电机设计--主要参数
  10. android 7 audio架构,GitHub - zozo825117/ble_audio_android: android audio框架