Java作业-查询相等价格图书

来源:互联网 发布:浦东网络电视台 编辑:程序博客网 时间:2024/06/11 23:11

目标效果:


代码:

import java.util.LinkedHashMap;import java.util.Map;import java.util.Map.Entry;/** * 编写一个Book类,该类至少有name和price两个属性。 * 该类要实现Comparable接口,在接口的compareTo()方法中规定两个Book类实例的大小关系为二者的price属性的大小关系。 * 在主函数中,选择合适的集合类型存放Book类的若干个对象,然后创建一个新的Book类的对象,并检查该对象与集合中的哪些对象相等。 * 查询结果: * 新书:《模式识别》与下列图书: * Java基础教程 * 数据库技术 * C++基础教程 * 价格相同,具体价格为:29.0元。 *  * @author Vivinia * @param <Book> * */public class Book implements Comparable<Book>{String name;double piece;public Book(String name,double piece){this.name=name;this.piece=piece;}@Overridepublic int compareTo(Book o) {if(piece>o.piece)return 1;              //前一个大于后一个,返回1,降序else if(piece==o.piece)return 0;             //前一个等于后一个,返回0elsereturn -1;      //前一个小于后一个,返回-1,升序}public static void main(String[] args) {Map<String,Double> bookMap=new LinkedHashMap<String,Double>();bookMap.put("Java基础课程",29.0);bookMap.put("Android开发",38.0);bookMap.put("数据结构",30.0);bookMap.put("数据库技术",29.0);bookMap.put("计算机网络技术",32.0);bookMap.put("C++基础教程",29.0);Book newBook=new Book("模式识别",29.0);System.out.println("新书:《模式识别》与下列图书:");for(Entry<String, Double> b : bookMap.entrySet()){      //遍历map中的每个元素Book comBook=new Book(b.getKey(),b.getValue());     //将每个元素转换为Book型if(newBook.compareTo(comBook)==0)                   //删选比较值为0的,即价格相等的System.out.println(comBook.name);}System.out.println("价格相同,具体价格为:"+newBook.piece+"元。");}}

注意一个小问题,就是一开始我实例化都是HashMap,但是发现存进去的数据和插入的顺序不一致,大概因为HashMap散列映射的事,但是换了TreeMap还是不一致,我也不太清楚,最后使用了LinkedHashMap,这个存储顺序和插入一致。