一.选择题

1.AC

解析:A.注意题目是Collections不是 Collection,前者是一个until下的类,后者才是接口

C.Set中的数据是无序且不能重复的

2.A

解析:将发生数组越界错误

3.D

解析:A和B都是list,有序,可以重复,C是使用二叉树实现的,也是有序的

4.C

解析:Set不可重复,重复会发生覆盖key,相当于没有添加

5.C

解析:重复会覆盖,但不会报错

二.简答题

1.数组和集合的比较

数组不是面向对象的,存在明显的缺陷,集合弥补了数组的缺点,比数组更灵活更实用,而且不同的集合框架类可适用不同场合。如下:

· 1:数组存放基本数据类型和对象,而集合类存放的都是对象的引用,而非对象本身!
· 2:数组长度固定无法动态改变,集合类容量动态改变。 
· 3:数组无法判断其中实际存有多少元素,length只告诉了数组的容量,定义了多大的长度后,即使没有存放那么多的元素,没有存放的元素的空间就浪费了,而集合的size()可以确切知道元素的个数 
· 4:数组仅采用顺序表方式, 集合有多种实现方式和不同适用场合。
· 5:集合以类的形式存在,具有封装、继承、多态等类的特性,通过简单的方法和属性即可实现各种复杂操作,大大提高了软件的开发效率

2.https://blog.csdn.net/an341221/article/details/50514664

3.Arraylist底层是数组,所以每次扩容都是创建新数组,很耗资源.LinkedList底层是双向链表,所以删添很方便

4.哈希表其实就是数组+链表,用hashCode的值作为数组的编号(KEY),然后每个数组内部放入链表(VALUE)

5.泛型可以让程序在编写时灵活转换类型,提高封装性,并且在编译时就实行类型检查,更安全

三.程序

1.

package ch9_1;import java.util.*;public class ch9_1 {public static void main(String[] args) {List<Book> listBook = new ArrayList<Book>() ;Map<String, Book> mapBook = new HashMap();listBook.add(new Book("0000001","老人与海",18.80,"上海教育出版社"));listBook.add(new Book("0000002","编程思想",180,"机械印刷出版社"));listBook.add(new Book("0000003","梦的解析",50,"清华出版社"));//注意map的存储是散列的,是按hash值来算的,所以取出数据顺序不一定和我们写的时候一样,存同理mapBook.put("0000000",new Book("0000000","红与黑",30.5,"清华出版社"));mapBook.put("0000001",new Book("0000001","老人与海",18.8,"上海教育出版社"));mapBook.put("0000002",new Book("0000002","编程思想",180,"机械印刷出版社"));mapBook.put("0000003",new Book("0000003","梦的解析",50,"清华出版社"));for (Book books: listBook) {System.out.println("ID:"+books.getId()+"\tname:"+books.getName()+"\t price:"+books.getPrice()+"\t publishingHouse:"+books.getPublishingHouse());}System.out.println("++++++++++++++++++++++++++++++++++++++++++");
//        for (Iterator<Map.Entry<String,Book>> it = mapBook.entrySet().iterator();it.hasNext();){
//            Map.Entry e = (Map.Entry) it.next();
//            System.out.println(e);
//            Book printBook = (Book) e.getValue();
//            System.out.println("ID:"+printBook.getId()+"\tname:"+printBook.getName()+"\t price:"+printBook.getPrice()+"\t publishingHouse:"+printBook.getPublishingHouse());
//        }Set<String> keySet = mapBook.keySet();for (String id : keySet) {System.out.println("ID:"+mapBook.get(id).getId()+"\tname:"+mapBook.get(id).getName()+"\t price:"+mapBook.get(id).getPrice()+"\t publishingHouse:"+mapBook.get(id).getPublishingHouse());}}}

2.

package ch9_2;import java.util.HashSet;
import java.util.TreeSet;public class ch9_2 {public static void main(String[] args) {HashSet<Book> hashSet = new HashSet<Book>();TreeSet<Book> treeSet = new TreeSet<Book>();//hashSet需要重写hashcode方法和equals()方法System.out.println("这里添加hashSet元素!");hashSet.add(new Book("0000000","红与黑",30.5,"清华出版社"));hashSet.add(new Book("0000000","老人与海",18.80,"上海教育出版社"));hashSet.add(new Book("0000002","编程思想",180,"机械印刷出版社"));hashSet.add(new Book("0000003","梦的解析",50,"清华出版社"));System.out.println("hashSet:\n"+hashSet);//treeSet需要实现Comparable<T>接口System.out.println("+++++++++++++++++++++++++++++++++++++++++\n这里添加treeSet元素!");treeSet.add(new Book("0000000","红与黑",30.5,"清华出版社"));treeSet.add(new Book("0000000","老人与海",18.8,"上海教育出版社"));treeSet.add(new Book("0000003","编程思想",180,"机械印刷出版社"));treeSet.add(new Book("0000002","梦的解析",50,"清华出版社"));System.out.println("treeSet:\n"+treeSet);}
}package ch9_2;public class Book  implements  Comparable<Book> {private String id;private String name;private  double price;private  String publishingHouse;public Book(String id, String name, double price, String publishingHouse) {this.id = id;this.name = name;this.price = price;this.publishingHouse = publishingHouse;}@Overridepublic int compareTo(Book b1){System.out.println("这里调用了compareTo()方法");return Integer.parseInt( this.id)-Integer.parseInt(b1.id);}@Overridepublic int  hashCode(){System.out.println("我调用了hashcode()函数!");return this.id.hashCode();}@Overridepublic boolean equals(Object obj) {System.out.println("我调用了equals()函数!");if (this == obj){return true;}if (obj == null){return false;}if (getClass() != obj.getClass()){return false;}Book other = (Book) obj;if (id != other.id){return false;}if(id == other.id){return  true;}if (name == null){if (other.name != null){return false;}} else if (!name.equals(other.name)){return false;}if (publishingHouse == null){if (other.publishingHouse != null){return false;}} else if (!publishingHouse.equals(other.publishingHouse)){return false;}if (Double.doubleToLongBits(price) != Double.doubleToLongBits(other.price)){return false;}return true;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}public String getPublishingHouse() {return publishingHouse;}public void setPublishingHouse(String publishingHouse) {this.publishingHouse = publishingHouse;}@Overridepublic String toString() {return "Book{" +"id='" + id + '\'' +", name='" + name + '\'' +", price=" + price +", publishingHouse='" + publishingHouse + '\'' +'}'+'\n';}
}

3.

尚学堂java 参考答案 第九章相关推荐

  1. 尚学堂java 参考答案 第七章

    本答案为本人个人编辑,仅供参考,如果读者发现,请私信本人或在下方评论,提醒本人修改 一.选择题 1.ACD 解析:B:java中左边不能直接直接指定长度,和C语言不一样 2.B 3.C 解析:B各行分 ...

  2. 尚学堂java 参考答案 第八章

    一.选择题 1.BD 解析:B:Integer是对象,所以默认的应该是null对象.D使用的是自动装箱 2.A 解析:String类的对象是final型,是不能修改的,concat()方法是生成一个新 ...

  3. 尚学堂java实战第四章课后习题

    尚学堂java实战第四章课后习题 文章中的题目答案仅供参考 选择题答案: 1.B 解析:一个java类必然存在构造器,即使没有定义构造器,也会存在一个默认的无参构造器. 2.D 3.AC 解析: A( ...

  4. 尚学堂Java学习第四章课后编程题作业参考答案

    我只是一个学习java 的初学者哈哈哈,代码写的都很烂,望大佬们指点指点. #尚学堂第三章:java面向对象基础 ##课后作业编程题一: 题目:1. 编写 Java 程序用于显示人的姓名和年龄.定义 ...

  5. 尚学堂java 个人参考答案 第九章 主要是编码题

    选择和简答题参考:https://blog.csdn.net/qq_34834846/article/details/81976921 三 编码题 1. 使用List和Map存放多个图书信息,遍历并输 ...

  6. 尚学堂Java第五章所有题目

    尚学堂Java第五章所有题目 一.选择题 二.简答题 三.编码题 编码题一 编码题二 编码题三 这次的作业有一部分理解的可能不是很透彻,可能不是最优的方法,希望师傅们能给刚入门的我一点建议! 一.选择 ...

  7. 尚学堂Java第四章作业编码题+个人想法

    尚学堂Java第四章作业编码题+个人想法 编码题一: 编码题二: 编码题三: 终于到我想说的地方了 刚开始学习Java,刚开始学会做笔记,觉悟的可能比较晚,但没关系,我会努力的! 由于每次做作业都难理 ...

  8. 尚学堂 JAVA第二章作业

    文章目录 尚学堂JAVA 第二章作业 尚学堂JAVA 第二章作业 第二章比较简单写得很粗略 import java.util.Scanner; import java.math.*;/*** 作业2* ...

  9. 尚学堂JAVA基础学习笔记_2/2

    尚学堂JAVA基础学习笔记_2/2 文章目录 尚学堂JAVA基础学习笔记_2/2 写在前面 第10章 IO技术 1. IO入门 2. IO的API 3. 装饰流 4. IO实战 5. CommonsI ...

最新文章

  1. python3基础语法-Python3入门(三)——Python基础语法
  2. Hazelcast入门指南第5部分
  3. java线程池 的方法_JAVA线程池的实现方法
  4. c++ 23种设计模式_使用Go实现GoF的23种设计模式(三)
  5. javacript 多文件程序
  6. [递归][重心] Luogu P4886 快递员
  7. Vue的批量更新原理
  8. BGP router-id OSPF router-id 路由同步实验
  9. NOIP2016愤怒的小鸟 题解报告 【状压DP】
  10. 多语言调用之 Java调用C/C++
  11. java update 卸载不了_javaupdate可以卸载吗
  12. 共模电感 | 关键参数的计算步骤
  13. 程序员的外包经验:印度、中国和菲律宾
  14. 不要为优势忘乎所以——职场人士寓言(6)
  15. Android网络框架选用(示例,已实际运行)Retrofit,okhttp,volley
  16. Java简单的对外接口验签
  17. java集成微信发送模板消息
  18. nero刻录 蓝光iso_如何将任何视频文件刻录到可播放的蓝光光盘
  19. 《乡土中国》读书笔记
  20. MySQL | 数据库基础理论、六大设计范式详解

热门文章

  1. media player 控件播放音乐与视频 0130 winform
  2. 笔记 英语二 考研先导课 0126
  3. 思维导图软件下载与安装 记录xmind安装过程
  4. iview 3.x 升级指南 —— Icon 篇
  5. 神州数码代表亚太及日本区荣膺Riverbed 2017年度最佳分销商
  6. SQL数据库高级查询命令(2)
  7. CentOs6.5 修改主机名
  8. 深度解读:GAN模型及其在2016年度的进展
  9. iOS开发小技巧--学会包装控件(有些view的位置由于代码或系统原因,位置或者尺寸不容易修改或者容易受外界影响)...
  10. UIScrollView相关问题(计算分页)