课后习题
1、创建一个Set集合,并用Set集合保存用户通过控制台输入的20个字符串。
疯狂java讲义第八章课后第1题答案

2、创建一个List集合,并随意添加10个元素。然后获取索引为5处的元素;再获取其中某2个元素的索引;再删除索引为3处的元素。
疯狂java讲义第八章课后第2题答案

3、给定["…此处请看书上]字符串数组,然后使用Map的key来保存数组中的字符串元素,value保存该字符串元素的出现次数,最后统计出各个字符串元素的出现次数。
疯狂java讲义第八章课后第3题答案

4、将本章未完成的梭哈游戏补充完整,不断地添加梭哈规则,开发一个控制台的梭哈游戏。

网上搜了一个梭哈的规则,比较清晰

疯狂java讲义第八章课后第4题答案

书上例子练习并说出含义(这样有点太耗费时间了,暂时先放着)

补充习题
1、在集合类里直接存储基本数据类型的值试一试。书上说不行。哦~,是采用自动装箱放进去的。

import java.util.*;public class CollectionTest
{public static void main(String[] args){ArrayList list = new ArrayList();list.add(4);list.add('n');System.out.println(list);}
}

ArrayList可以不用菱形,然后可以放不同类型的类。但是会输出一些警告

加上-Xlint:unchecked后

2、练习Collection接口里的方法
包含练习Iterator、Spliterator(不知道这个Spliterator是干嘛用的
parallelStream()返回一个可能同步的流是什么意思?
那个toArray(IntFunction)不知道怎么用,居然会报String不能转换成Object的错,无法理解
使用toArray()方法,并查看在有无泛型的时候的区别。没区别唉
练习Collection接口里的方法

补充Stream
==collect()方法不太懂用
generate不会用
iterate也不会用
mapMulti()查无此方法
reduce()也不会用
toArray()的第二种方式不会用

2月28日练习到flatMap
flatMap()就是把每个元素按照指定的正则表达式切割分裂成新的元素
peek()这种中间方法,需要有结束方法,才会执行
dropWhile()也是

练习Stream接口

3、练习那些遍历集合的方式。
(1)、使用Lambda表达式遍历集合
(2)、使用Iterator遍历集合元素。尝试在Iterator期间,修改原集合,查看结果。书上的299页,只有在删除集合中的某个特定元素才不会抛出异常是什么意思
(3)、使用Lambda表达式遍历Iterator
(4)、使用foreach循环遍历集合元素

Java练习四种方式遍历集合

4、使用Predicate操作集合
java练习使用Predicate操作集合

5、使用Stream操作集合
尝试创建流

使用流

说出流的有状态方法和短路方法分别是什么含义,为什么要这么命名,分别包括什么方法?
答:
有状态的方法,目前的理解就是,需要遍历所有的元素,生成一个新的属性;比如allMatch();
短路方法,只需要找到符合条件即可,比如anyMatch();

peek方法返回的流与原有流包含相同的元素是什么意思?返回一样的一个stream?
这是一个中间方法,可以做一些小事情,就是了,但是不会影响元素,.之后的方法依旧是相同的元素,不会因为多一个peek处理而改变元素。

java练习使用Stream操作集合

6、使用HashSet
(9、练习java文档中的HashSet)
HashSet默认长度是16
练习Java文档HashSet
以后有机会,补一个Spliterator类的练习

7、自己写一个类,equals和hashCode符合Set标准
答:就是hashCode()和equals()都要重写

//第7题的代码
class U
{int count;public U(int count){this.count = count;}public boolean equals(Object obj){if(this == obj)return true;if( obj != null && obj.getClass == U.class){var u = (U) obj;return this.count == u.count;}return false;}public int hashCode(){return this.count;}
}

8、尝试书上的例子,就是set加入可变对象,然后修改实例变量,看看会怎么样。看看还能不能准确访问
答:也放在,第6题了,先说一下HashSet的原理是,插入的时候,是根据hashCode的返回值插入到对应地址的,然后书上的例子是将不同的对象放入到HashSet中后,直接放入到对应的地址,后面修改实例变量后也不会修改这个存放地址的。
将两个对象的实例变量修改成一样的后,结果就是,在删除-3的时候,也是根据地址来删除的,所以-2位置的元素没被删除,查看是否包含-2的时候,因为是根据equals进行判断的,所以也判断没有-2,导致了一种无法被正确操作的情况出现。
结论:不要在插入到HashSet中后,修改能够影响hashCode()返回值的变量。否则会出现不好的结果。

9、练习java文档中的HashSet,和第6题合并在一起了

10、练习java文档中的LinkedHashSet
疑问:LinkedHashSet和LinkedList什么区别?
。。。LinkedHashSet没有自己的方法,基本和HashSet相同

import java.util.*;public class LinkedHashSetTest
{public static void main(String[] args){//练习书上的例子LinkedHashSet books = new LinkedHashSet();books.add("疯狂Java讲义");books.add("轻量级JavaEE企业应用实战");System.out.println(books);books.remove("疯狂Java讲义");books.add("疯狂Java讲义");System.out.println(books);//练习Java文档}
}

11、说出EnumSet、TreeSet、LinkedHashSet和HashSet的区别和联系,以及各自的优缺点,适用什么场景?

EnumSet

TreeSet:可以自动排序,如果有排序需求可以使用它

LinkedHashSet:内部有序,如果是经常迭代并且需要按照添加顺序,可以使用它

HashSet:无序,也不记录顺序,效率比TreeSet和LinkedHashSet要高,没有特别的需求就可以用它。

12、练习java文档的TreeSet.

TreeSet判断元素相等的标准式compareTo返回0即可
TreeSet中元素要重写equals()和compareTo(),当compareTo()返回0的时候,equals()应该返回true;
有如下情况
equals()返回true,compareTo()不返回0
会导致,你认为应该相等的东西,结果能够重复存入TreeSet中
equals()返回true,compareTo()返回0
正常做法
equals()返回false,compareTo()返回0
会导致,你认为不同的东西,无法存入TreeSet中

有机会补充一下,Comparator这个类

subSet()默认就是左包右不包

练习Java文档TreeSet

13、对比TreeSet和HashSet

TreeSet会自动排序,HashSet不会。
TreeSet最好只放入同一个类的实例,HashSet没有这个要求
TreeSet中的类必须实现Comparable接口,HashSet没有这个要求
TreeSet中的类要重写equals()和compareTo()方法(equals()返回true,compareTo()返回0)HashSet中的类要重写equals()和hashCode()(equals()返回true,hashCode()返回相同)

14、练习java文档的EnumSet
练习Java文档EnumSet

调用集合之前,有一个说法,是要调用一次clear()。网上有人回答,我没看懂为什么,

在此,对上面的Set类做一个总结:
答:需要排序的话,使用TreeSet,不需要排序的话,使用HashSet。
经常遍历的话,使用LinkedHashSet。经常插入删除的话,使用HashSet。
由于Set的三个实现类HashSet、TreeSet类、EnumSet类都是线程不安全的,所以有同步访问的时候需要包一层
SortedSet s = Collections.synchronizedSortedSet(new TreeSet(…));

     这里测试一个所谓的线程不安全

没想到好办法进行测试

15、练习java文档的ArrayList
练习java文档的ArrayList

16、尝试一下用set改变List集合长度,p318

17、练习java文档的ListIterator

18、练习java文档的List

19、练习java文档的Vector

20、说出ArrayList和Vector的区别和联系

21、说出Arrays.ArrayList和ArrayList的区别和联系

22、练习java文档的Queue并测试一下remove空队列会怎样。还有其他的方法对空队列使用看看是报错还是null

23、练习java文档的PriorityQueue。

24、说出PriorityQueue和TreeSet的区别和联系

25、练习java文档的Deque接口,如果无法直接使用就练习ArrayDeque类。换一个更好的说法:练习所有实现Deque接口的类,并且对比他们之间的不同,说出为什么需要实现这么一个类,有什么优势?
Array的意思是基于数组实现?基于数组实现又是什么含义?

26、说出Deque和Queue、Deque和Stack的区别和联系

27、将ArrayDequeue当做栈和队列来使用,并熟悉它们

28、说出使用List集合的建议有什么?(根据原理理解)

为什么会有LinkedHashSet这种形式?又是链式结构,又是哈希结构?

29、练习Map的实现类,和25题要求一致。包括HashMap、Hashtable、LinkedHashMap、SortedMap、TreeMap、WeakHashMap、IdentityHashMap、EnumMap

30、练习Map.Entry类,为什么要叫Entry这个名字?

31、熟悉p327页遍历Map的方式

32、说出HashMap和Hashtable的区别和联系。并且尝试使用Collections的方法让HashMap变成线程安全的类。

33、探索Collections让集合变成线程安全的机制,是怎么办到的?

34、练习java文档中的Properties,并分别保存进ini和xml文件

35、练习java文档的InputStream和OutputStream

36、学习红黑树

37、为什么HashSet中元素的顺序会变?因为只要有空位就可以放入,然后垃圾回收机制不停回收会导致原本前面是满的,多出了空位,然后把新的元素放到旧元素中,也不排除紧凑内存的影响。可以观察一下是不是这样,就是新插入的值会跑到旧插入的值之前。还要查一下javaHash底层的机制是什么。

38、熟悉p337的用法8.6.9

39、练习java文档操作集合的工具类Collections

40、说出Set、List和Map等集合的区别和联系

41、练习java文档ArrayUtils工具类

42、结合之前自己写的梭哈和p341页的梭哈,按照作者提示将梭哈补充完整。

43、试一试无序的binarySearch会发生什么,

44、说出不可变的集合有什么意义?线程安全的集合我还知道是为了防止多线程操作中,数据的不同步,或者错误,或者同时访问造成的数据错误。但是不可变的集合我就不理解了。

45、singletonxxx()不能用来包装set吗?为什么?

46、尝试多线程访问线程不安全的集合,然后再包装成线程安全,看看错误还会不会发生。

47、集合类的of创建的是不可变类?试一下。

48、Map.ofEntries()创建的map是不可变的吗?

49、练习Enumeration接口

50、练习BitSet接口

51、看一下Consumer函数式接口

52、尝试在迭代的时候,删除集合元素,看看会抛出什么异常。或者添加元素,或者调整元素的位置

53、说出线程安全和线程不安全的含义。并且线程不安全类怎么变成线程安全的类?

54、说出hashCode()和equals()对于Hashxxx的含义以及作用是什么?以及为什么要保持equals返回true并且hashcode返回相同?

55、说出Set集合中HashSet、LinkedHashSet、TreeSet和EnumSet的特点,以及适合什么场景,有什么使用要求。

56、使用TreeSet的自然排序和定制排序。

57、p313的TreeSet会对集合中的元素重新索引是什么意思?有什么作用。

58、p314显式或隐式分别怎么做?EnumSet内部以位向量的形式存储是什么含义?用bit存储?

59、红黑树是什么原理,怎么实现?

60、p315的HashSet为什么要clear()一下

61、p316用Collections.synchronizedSortedSet()包装,再用synchronized块试一下,都使用一下。然后为什么Collections为什么提供的方法要叫SortedSet?别的不行吗?还是提供了别的方法?

62、尝试一下List.set方法,设置超出长度的index。

63、p319的基于数组实现是什么意思?如何确认ArrayList和Vector类的初始容量?

64、关于Queue尝试一下他的方法在空Queue的时候会怎样?

65、弄清楚常用集合的继承或者实现了什么类。

66、PriorityQueue的原理是什么?

67、说出List判断两个对象相等的标准是什么?以及为什么这样?

68、说出ArrayList和Vector的特点以及适用场景,以及固定长度的List的特点以及适用场景

69、说出PriorityQueue、ArrayQueue和LinkedList的特点和适用场景。

70、也都尝试一下Deque接口的方法在队列为空的情况下的使用。

71、说出应该如何选择ArrayList和LinkedList?

72、Map的内部类为什么叫Entry?

73、Map不用使用Collections包装的方法吗?

74、说出HashMap和Hashtable、LinkedHashMap、TreeMap、WeakHashMap、EnumMap的区别和特点。

75、尝试一下p337上半部分的说明

76、使用TreeMap的自然排序和定制排序。

77、p337、的通过hash算法控制集合大小?什么意思?

78、Collections的synchronizedXxx方法内部是怎么实现的?

79、Map.ofEntries()是不可变的吗?

要练习java文档的类或者接口

1、Collections

2、Iterator

3、Predicate

4、Stream

5、Set

6、HashSet

7、LinkedHashSet

8、TreeSet

9、EnumSet

10、List

11、ListIterator

12、ArrayList

13、Vector

14、Arrays.ArrayList

15、Queue

16、PriorityQueue

17、Deque

18、ArrayDeque

19、Map

20、HashMap

21、Hashtable

22、LinkedHashMap

23、Properties

24、SortMap

25、TreeMap

26、WeakHashMap

27、IdentityHashMap

28、EnumMap

29、Enumeration

30、LinkedList

疯狂java讲义第八章课后习题答案相关推荐

  1. 疯狂java讲义第四章习题答案

    1.使用循环输出九九乘法表. 疯狂java讲义第四章课后习题第1题答案 2.根据给定的层数,使用循环输出等腰三角形. 疯狂java讲义第四章课后习题第2题答案 3.给定半径输出圆形. 需要注意的是,计 ...

  2. c语言课后答案第八章,C++第一至第八章课后习题答案

    9. 请将下列十进制数转换为二进制.八进制和十六进制数: (1) 79 (2) 127 (3) 64 (4) 512 (5) 567 (6) 128 (7) 960 (8) 100 数字 79 127 ...

  3. Java第八章课后习题答案

    1.String类型有什么特点? 1. 两种实例化方式: (1)String可以采用直接赋值的形式进行操作,这一点像基本数据类型的赋值操作一样. 范例:String str = "hello ...

  4. 【最详细】数据结构(C语言版 第2版)第八章课后习题答案 严蔚敏 等 编著

    所有章节答案合集-->传送门 1.选择题 ( 1)从未排序序列中依次取出元素与已排序序列中的元素进行比较, 将其放入已排序序 列的正确位置上的方法,这种排序方法称为() . A.归并排序 B.冒 ...

  5. 李航老师《统计学习方法》第八章课后习题答案

    其他章节答案请参考我的汇总统计学习方法答案汇总,都是自己写的. 8.1.题目太长,懒得打字了 因为训练数据实例的维度比书中的例子8.1的实例的维度大,也就是特征的数目比较多,因而需要进行特征选择.我在 ...

  6. 【仅供参考】csapp第八章课后习题答案(欢迎批评指正)

    8.9 [答案] 进程对 并发? AB 否 AC 是 AD 是 BC 是 BD 是 CD 是 [解释]时间有重叠部分 8.10 [答案] setjmp:C longjmp:B execve:B for ...

  7. 《Java基础入门》课后习题答案 资源分享

    链接:https://pan.baidu.com/s/1jrTOraKBS43pgh1ODQn3Zg  提取码:af43 转载于:https://www.cnblogs.com/Romantic-Ch ...

  8. 现代质量工程第五、六、八章课后习题答案

    第五章 质量控制常用技术 1.质量工程中常用的技术有哪些? 统计分析工具:老七种(分层法.调查表.排列图.因果图.直方图.散点图和控制图):新七种(关联图法.KJ法.系统图法.矩阵图法.矩阵数据分析法 ...

  9. 统计学第八版贾俊平第八章课后习题答案

    3.3一种袋装食品用生产线自动装填.每袋重量大约为50g,但由于某些原因,每袋重量不会恰好是50g.下面是随机抽取的100袋食品,测得的重量数据如表所示. 食品重量(单位:g) 要求: (1)构建这些 ...

  10. 传智《Java基础入门》课后习题答案

    百度盘:https://pan.baidu.com/s/11_h3g6i002RVzVTTOAcDPA 提取码:gpv4

最新文章

  1. jquery.desktop.js 代码分析
  2. 交错级数如何判断收敛_从微分方程的级数解到两个特殊方程(1):关于平凡点的解...
  3. 手把手教您如何识别翻新机子
  4. cas实现单点登录原理
  5. bldc 原理 方波控制_【百问百答】ST 电机控制实战问答合辑 | 连载之一
  6. 深入理解5种IO模型
  7. 周六直播丨细致入微 – OceanBase云平台安装部署实战
  8. c语言c判断字符数字,c语言问题求教 利用函数判断字符串中是否全为数字
  9. C# PDF 转成图片利用GhostScript
  10. 上市公司与不上市公司的区别
  11. Linux进程间同步和通信,linux进程间的同步方法
  12. 20190901:(leetcode习题)缺失数字
  13. js函数中变量声明提前
  14. python本科毕业论文范文_【软件工程论文】软件工程论文范文(共40篇)
  15. 大漠插件注册使用方法教程
  16. 人生感悟:欲望适度则为利,欲望过度则为害
  17. @Resource注解
  18. convert_variables_to_constants()
  19. 柬埔寨吴哥旅游:并不仅仅是神秘
  20. 当前中国计算机硬件发展情况,中国计算机硬件技术发展与展望.doc

热门文章

  1. matlab标准数据,Matlab数据标准化实现
  2. VB6.0 组织json对象并生成json字符串
  3. TouchPanel--Qcom DRM休眠唤醒通知链的注册及回调流程
  4. FusionChartsFree的JSP标签开发
  5. clearcase 常用命令
  6. 基于 GMDSS 的电子海图定位仿真研究
  7. 丁向荣单片机pdf_STC系列增强型8051单片机原理与应用
  8. ETL工具kettle 日志表配置及工作流程
  9. 服务器主板128G只显示出64G,[硬件维护]请教高手:新买的160G硬盘为什么分区后就只能显示128G?...
  10. KKCapture视频录像软件下载