疯狂java讲义第⼋章课后习题答案
课后习题
1、创建⼀个Set集合,并⽤Set集合保存⽤户通过控制台输⼊的20个字符串。
2、创建⼀个List集合,并随意添加10个元素。然后获取索引为5处的元素;再获取其中某2个元素的索引;再删除索引为3处的元素。
3、给定["…此处请看书上]字符串数组,然后使⽤Map的key来保存数组中的字符串元素,value保存该字符串元素的出现次数,最后统计出各个字符串元素的出现次数。
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()⽅法,并查看在有⽆泛型的时候的区别。没区别唉
补充Stream
collect()⽅法不太懂⽤
dropWhile()也不会
2⽉28⽇练习到flatMap
3、练习那些遍历集合的⽅式。
(1)、使⽤Lambda表达式遍历集合
(2)、使⽤Iterator遍历集合元素。尝试在Iterator期间,修改原集合,查看结果。书上的299页,只有在删除集合中的某个特定元素才不会抛出异常是什么意思
(3)、使⽤Lambda表达式遍历Iterator
(4)、使⽤foreach循环遍历集合元素
4、使⽤Predicate操作集合
5、使⽤Stream操作集合
尝试创建流
使⽤流
说出流的有状态⽅法和短路⽅法分别是什么含义,为什么要这么命名,分别包括什么⽅法?
peek⽅法返回的流与原有流包含相同的元素是什么意思?返回⼀样的⼀个stream?
6、使⽤HashSet
7、⾃⼰写⼀个类,equals和hashCode符合Set标准
8、尝试书上的例⼦,就是t加⼊可变对象,然后修改实例变量,看看会怎么样。看看还能不能准确访问
9、练习java⽂档中的HashSet
10、练习java⽂档中的LinkedHashSet
11、说出EnumSet、TreeSet、LinkedHashSet和HashSet的区别和联系,以及各⾃的优缺点,适⽤什么场景?
12、练习java⽂档的TreeSet.
13、对⽐TreeSet和HashSet
14、练习java⽂档的EnumSet
15、练习java⽂档的ArrayList
16、尝试⼀下⽤t改变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()不能⽤来包装t吗?为什么?
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.t⽅法,设置超出长度的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