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

目标效果:


代码:

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

	@Override
	public int compareTo(Book o) {
		if(piece>o.piece)
			return 1;              //前一个大于后一个,返回1,降序
		else if(piece==o.piece)
			return 0;             //前一个等于后一个,返回0
		else
			return -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,这个存储顺序和插入一致。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值