6-23 sdust-Java-可实现多种排序的Book类
设计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类相关推荐
- 6-23 sdust-Java-可实现多种排序的Book类 (20 分)
6-23 sdust-Java-可实现多种排序的Book类 (20 分) 设计Book类,要求:1)Book类的成员属性包括:书名name(String类型).出版日期publishDate(Date ...
- 6-3 sdust-Java-可实现多种排序的Book类 (20 分)
6-3 sdust-Java-可实现多种排序的Book类 (20 分) 设计Book类,要求: 1)Book类的成员属性包括:书名name(String类型).出版日期publishDate(Date ...
- 山科大 6-1 sdust-Java-可实现多种排序的Book类 (20 分)(18 软件 期中考试函数1)
设计Book类,要求:1)Book类的成员属性包括:书名name(String类型).出版日期publishDate(Date类型).定价price(double型):2)为Book对象提供按出版日期 ...
- R6-4 sdust-Java-可实现多种排序的Book类
设计Book类,要求:1)Book类的成员属性包括:书名name(String类型).出版日期publishDate(Date类型).定价price(double型):2)为Book对象提供按出版日期 ...
- OJ sdust Java记录
6-1 sdust-Java-可实现多种排序的Book类 (20 分) 设计Book类,要求:1)Book类的成员属性包括:书名name(String类型).出版日期publishDate(Date类 ...
- Java ArrayList的不同排序方法
由于其功能性和灵活性,ArrayList是 Java 集合框架中使用最为普遍的集合类之一.ArrayList 是一种 List 实现,它的内部用一个动态数组来存储元素,因此 ArrayList 能够在 ...
- Java数组与八大排序
文章目录 浅谈数组 数组初始化 知识捡漏静态初始化写法 数组操作:反转 二维数组 数组的练习:根据数组元素查找该元素第一次在数组中出现的索引 方法1:挨个遍历查找法 方法2:二分查找法 二 数组常见的 ...
- Java数据结构第一讲-排序算法
常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构) 数据结构和算法作为程序员的基本功,一定得稳扎稳打的学习,我们常见的框架底层就是各类数据 ...
- java的arraylist_Java ArrayList排序的3种方法
首页 > 基础教程 > 集合框架 > ArrayList类 Java ArrayList排序的3种方法 1. 使用Collections.sort()方法进行排序 ArrayList ...
最新文章
- java安全插件_如何安全地实现Java插件安全性?
- 为什么要学python语言_我们为什么要学习Python语言?
- android device monitor命令行窗口在哪里_Vulkan在Android使用Compute shader
- 【数据结构与算法】之电话号码键盘的字母组合算法
- [java]ArrayList的介绍
- root cause of exception single deletion failure
- js中遍历注册事件时索引怎么获取
- Bootstrap 表单的动作按钮
- 城南云计算中心项目纳入国家储备库
- python入门实践19章_求助贴,python编程才能够入门到实践 第19章 19.2.2 代码出错
- 图片相似度识别在线_图片相似度计算的几种方法
- 离散数学及其应用(第六版) 习题
- 批处理之for /r
- ASK、OOK、FSK、GFSK 学习
- python学习线路图
- Linux下 Spring Boot 上传找不到临时目录, 出现500错误
- 服务器两广豪杰维护,逆水寒11月22日更新到几点 世界boss即将掉落逆水之寒
- 理解ES6中的暂时死区(TDZ)
- 按键(独立按键、矩阵键盘)——附带程序
- Ubuntu20.04实时显示CPU、内存、网速
热门文章
- PHP 蒙太奇马赛克拼图,AndreaMosaic制作一幅马赛克拼图
- 01_安卓APP开发流程概览
- Python笔记_07_列表的相关操作_列表相关函数_深浅拷贝_字典相关函数_集合相关函数_冰冻集合
- 根据视频URL解析视频信息(本地|网络)
- 互联网/计算机 校园招聘信息大全!
- MAC OS下免费下载YouTube
- 【渝粤教育】国家开放大学2019年春季 0777-22T市场开发与营销推广 参考试题
- 基于莱维飞行和随机游动策略的灰狼算法-附代码
- 电机设计--主要参数
- android 7 audio架构,GitHub - zozo825117/ble_audio_android: android audio框架