本文内容可能已过时或不再适用,请结合实际情况谨慎参考。

一、实验内容

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 类示例。

JAVA

运行结果:

JAVA

例 7-2:修改例 7-1,使用 Iterator 进行遍历。

JAVA

运行结果:

JAVA

例 7-3:ArrayList 类使用示例。

JAVA

运行结果:

JAVA

例 7-4:LinkedList 类使用示例。

JAVA

运行结果:

JAVA

例 7-5:HashSet 类使用示例。

JAVA

运行结果:

JAVA

例 7-6:TreeSet 类使用示例。

JAVA

运行结果:

JAVA

例 7-7:实现 java.util.Comparator 接口,按例 7-6 相反顺序输出。

JAVA

运行结果:

JAVA

例 7-8:HashMap 类使用示例。

JAVA

运行结果:

JAVA

例 7-9:使用 LinkedHashMap 类修改例 7-8,以插入的顺序输出。

JAVA

运行结果:

JAVA

例 7-10:TreeMap 类使用示例。

JAVA

运行结果:

JAVA

例 7-11:

JAVA

运行结果:

JAVA

例 7-12:泛型在 ArrayList 的使用。

JAVA

运行结果:

JAVA

例 7-13:泛型在 HashSet 的使用。

JAVA

运行结果:

JAVA

例 7-14:泛型在 HashMap 的使用。

JAVA

运行结果:

JAVA

二、课后习题

第七章:Java 对象容器

一、填空题
二、选择题
三、问答题

评论