一、实验内容
1. 掌握熟悉 Eclipse。
https://wenku.baidu.com/view/20ed7c4233687e21af45a9ad.html?sxts=1556415817159
2. 简述 ArrayList 与 LinkedList 的区别。
(1)底层结构:
-
ArrayList:底层基于动态数组实现
-
LinkedList:底层基于双向链表实现
(2)查询访问:
-
ArrayList:随机查询快,通过下标直接定位
-
LinkedList:随机查询慢,需要从头遍历查找
(3)增删元素:
-
ArrayList:中间、头部增删效率低,需要大量元素移位
-
LinkedList:任意位置增删效率高,只修改节点引用
(4)内存占用:
-
ArrayList:内存连续,有一定容量冗余
-
LinkedList:每个节点保存数据和前后引用,内存开销更大
(5)使用场景:
-
ArrayList:查询多、增删少 的场景
-
LinkedList:频繁插入、删除 的场景
3. 简述 HashSet 与 TreeSet 的区别。
(1)底层结构:
-
HashSet:底层基于 HashMap 哈希表
-
TreeSet:底层基于 红黑树(平衡二叉树)
(2)元素有序性:
-
HashSet:无序、不保证存取顺序
-
TreeSet:自然升序 / 自定义排序,元素按规则有序
(3)去重原理:
HashSet:依赖 hashCode() + equals() 去重
TreeSet:依赖 compareTo() 或比较器 Comparator 去重
(4)null 值:
-
HashSet 允许存一个 null
-
TreeSet 不允许存 null,会报空指针异常
(5)查询效率:
-
HashSet:哈希查找,效率高
-
TreeSet:树结构遍历,效率略低
(6)使用场景:
-
HashSet:只需去重、不要求排序
-
TreeSet:需要自动排序且去重
4. 运行例 7-1 到例 7-14。
例 7-1:使用 Vector 类示例。
运行结果:
例 7-2:修改例 7-1,使用 Iterator 进行遍历。
运行结果:
例 7-3:ArrayList 类使用示例。
运行结果:
例 7-4:LinkedList 类使用示例。
运行结果:
例 7-5:HashSet 类使用示例。
运行结果:
例 7-6:TreeSet 类使用示例。
运行结果:
例 7-7:实现 java.util.Comparator 接口,按例 7-6 相反顺序输出。
运行结果:
例 7-8:HashMap 类使用示例。
运行结果:
例 7-9:使用 LinkedHashMap 类修改例 7-8,以插入的顺序输出。
运行结果:
例 7-10:TreeMap 类使用示例。
运行结果:
例 7-11:
运行结果:
例 7-12:泛型在 ArrayList 的使用。
运行结果:
例 7-13:泛型在 HashSet 的使用。
运行结果:
例 7-14:泛型在 HashMap 的使用。
运行结果:
评论