尚学堂·Java300集·第九章·作业题参考答案(eclipse运行结果截图+源码)

eclipse运行结果截图:
在这里插入图片描述
源码:

/**
 * 尚学堂第九章练习题解答
 * @author 绝尘
 *
 *一、选择题
 *  建议:将代码赋值到程序中检验。
 *	答案:
 *  1.CD——Map中每个元素不仅仅是一个键值对,还有hashCode、next信息
 *  2.A——索引越界
 *  3.D
 *  4.C
 *  5.C——键值key相同,被覆盖
 *  
 *三、编码题
 */
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class SxtExercise09 {
	
	public static void main(String[] args) {
		
		/*
		 *  1.
		 */
		System.out.println("第一题输出结果:");
		//新建一些书籍信息
		Book book1 = new Book(1000, "神雕侠侣", 30, "北京大学出版社");
		Book book2 = new Book(1001, "笑傲江湖", 25, "北京大学出版社");
		Book book3 = new Book(1002, "射雕英雄传", 30, "北京大学出版社");
		Book book4 = new Book(1003, "鹿鼎记", 40, "北京大学出版社");
		Book book5 = new Book(1003, "鹿鼎记", 40, "北京大学出版社");
		Book book6 = new Book(1004, "鹿鼎记", 40, "北京大学出版社");
		
		
//		1.1 新建一个bookMap用来存放所有的书籍信息
		Map<Integer,Book> bookMap = new HashMap<Integer, Book>();
//		将所有书籍信息存入bookMap
		bookMap.put(book1.getId(), book1);
		bookMap.put(book2.getId(), book2);
		bookMap.put(book3.getId(), book3);
		bookMap.put(book4.getId(), book4);
//		遍历打印书籍信息
		Set<Integer> keySet = bookMap.keySet();
		for(Integer key:keySet) {
			System.out.println(bookMap.get(key));
		}
		
		System.out.println("---------------------------------------------------");
		
//		1.2 新建一个bookList来存放所有书籍信息
		List<Book> bookList = new ArrayList<Book>();
//		将所有书籍信息存入bookList
		bookList.add(book1);
		bookList.add(book2);
		bookList.add(book3);
		bookList.add(book4);
//		遍历打印书籍信息
		for(Book book:bookList) {
			System.out.println(book);
		}

		
		System.out.println("###########################");
		/* 
		*  2.
		*/
		System.out.println("第二题输出结果:");
//		新建一个bookHashSet用来存放图书信息
		Set<Book> bookHashSet = new HashSet<Book>();
		bookHashSet.add(book4);//id=1003,先将book4放进去
		bookHashSet.add(book5);//id=1003,不能放进去,首先因为hashCode相同,再对比equals时id也相同,所以放不进去
		bookHashSet.add(book6);//id=1004,能放进去,hashCode不同就直接放进去了
		
		System.out.println(bookHashSet.size());
		
		
		System.out.println("###########################");
		/*
		 *  3.
		 *  
		 */
		System.out.println("第三题输出结果:");
		Map<Integer,StudentEntry> stuMap = new HashMap<>();
		
		StudentEntry stu1 = new StudentEntry(1000, "张三", 22, "男");
		StudentEntry stu2 = new StudentEntry(1001, "李四", 23, "男");
		StudentEntry stu3 = new StudentEntry(1002, "王五", 26, "男");
		StudentEntry stu4 = new StudentEntry(1003, "赵六", 21, "男");
		
		stuMap.put(stu1.id, stu1);
		stuMap.put(stu2.id, stu2);
		stuMap.put(stu3.id, stu3);
		stuMap.put(stu4.id, stu4);
		
		List<StudentEntry> stuList = new ArrayList<>();
		
		Set<Entry<Integer,StudentEntry>> set = stuMap.entrySet();
		for(Map.Entry<Integer,StudentEntry> s:set) {
			stuList.add(s.getValue());
		}
		
//		Map中value(StudentEntry类)显示
		System.out.println(stuList.get(0));
		System.out.println(stuList.get(1));
		System.out.println(stuList.get(2));
		System.out.println(stuList.get(3));
		
	}//main方法
}

class StudentEntry extends Student{
	public StudentEntry() {
		super();//调用父类不含参构造器
	}
//	父类非空构造器不能继承,所以需要重写
	public StudentEntry(int id, String name, int age, String sex) {
		super(id, name, age, sex);//调用父类含参构造器
	}
}

class Student{
	int id;
	String name;
	int age;
	String sex;
	public Student(int id, String name, int age, String sex) {
		super();
		this.id = id;
		this.name = name;
		this.age = age;
		this.sex = sex;
	}
	public Student() {
		// TODO Auto-generated constructor stub
	}
	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return "id:"+id+",name:"+name+",age:"+age+",sex:"+sex;
	}
}

class Book{
	int id;
	String name;
	double price;
	String company;
	public Book(int id, String name, double price, String company) {
		super();
		this.id = id;
		this.name = name;
		this.price = price;
		this.company = company;
	}
	int getId() {
		return id;
	}
	@Override
	public String toString() {
		return "id:"+id+",name:"+name+",price:"+price+",company:"+company;
	}
	@Override
	public int hashCode() {
		return id;
	}
	@Override
	public boolean equals(Object obj) {
		if(obj instanceof Book) {
			Book newBook = (Book)obj;
			if(newBook.getId()!=this.getId())
				return false;//id不同,放返回false,就可以放进去了
			else {
				return true;
			}
		}else {
			return false;
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值