《Java程序设计》第八周学习总结
20175334 《Java程序设计》第八周学习总结
教材学习内容总结
第十五章
- 泛型
- 泛型类声明
class 名称<泛型列表>
- 使用泛型类声明对象
- 和普通类相比,泛型类声明和创建对象时,类名后多了一对
<>,而且必须要用具体的类型替换<>中的泛型 - 泛型主要目的是可以建立具有类型安全的数据结构
- 和普通类相比,泛型类声明和创建对象时,类名后多了一对
- 泛型类声明
- 链表
LinkedList<E>泛型类- 必须要指定
E的具体类型,然后用add(E obj)方法向链表依次增加结点
- 必须要指定
- 常用方法
public boolean add<E element>,向链表的指定位置添加一个新的结点,该结点中的数据是参数element指定的数据public void add(int index, E element),向链表的指定位置添加一个新的结点,该结点中的数据是参数element指定的数据public void clear(),删除链表的所有结点,使当前链表成为空链表public E remove(int index),删除指定位置上的结点public boolean remove(E element),删除首次出现含有数据element的结点public E get(int index),得到链表中指定位置处结点中的数据public int indexOf(E element),返回含有数据element的结点在链表中首次出现的位置,如果链表中无此结点则返回-1public int lastIndexOf(E element),返回含有数据element的结点在链表中最后出现的位置,如果链表中无此结点则返回-1public E set(int index,E element),将当前链表index位置结点中的数据替换为参数element指定的数据,并返回被替换的数据public int size(),返回链表的长度,即结点的个数public boolean contains(Object element),public void addFirst(E element),向链表的头添加新结点,该结点中的数据是参数element指定的数据public void addLast(E element),向链表的末尾添加新结点,该结点中的数据是参数element指定的数据public E getFirst(),得到链表中第一个结点中的数据public E getLast(),得到链表中最后一个结点中的数据public E removeFirst(),删除第一个结点,并返回这个结点中的数据public E removeLast(),删除最后一个结点,并返回这个结点中的数据public Object clone(),得到当前链表的一个克隆链表,该克隆链表中结点数据的改变不会影响到当前链表中结点的数据,反之亦然
- 遍历链表
- 链表对象可以使用
iterator()方法获取一个Iterator对象,该对象是针对当前链表的迭代器
- 链表对象可以使用
- 排序与查找
public static sort(List<E>list),将list中的元素按顺序排序int binarySearch(List<T>list,T key,CompareTo<T>c),使用析半法查找list是否含有和参数key相等的元素
- 洗牌与旋转
public static void shuffle(List<E>list),将list中的元素按洗牌算法重新随机排序static void rotate(List<E>list,int distance),旋转链表中的数据public static void reverse(List<E>list),翻转list中的数据
- 堆栈
- 一种只能在一端进行输入或输出数据的操作
public E push(E item),实现压栈操作(向堆栈中输入数据)public E pop(),实现弹栈操作(从堆栈中输出数据)public boolean empty(),判断堆栈是否还有数据public E peek(),获取堆栈顶端的数据,但不能删除该数据public int search(Object data),获取数据在堆栈中的位置
- 散列映射
HashMap<K,V>泛型类- 常用方法
- 遍历散列映射
public Collection values()方法返回一个实现Collection接口类创建的对象,可以使用接口回调技术,即将该对象的引用赋给Collection接口变量,该接口变量可以回调iterator()\方法获取一个Iterator对象,这个Iterator对象存放散列映射中所有键/值对中的值
- 基于散列映射的查询
- 对于经常需要进行查找的数据可以采用散列映射来储存这样的数据,即为数据指定一个查找它的关键字,然后按着键/值对,将关键字和数据一并存入散列映射中
- 树集
TreeSet<E>泛型类- 树集采用树结构存储数据,树结点中的数据会按存放的数据的“大小”顺序一层一层地依次排列,在同一层中的结点从左到右按字典顺序从小到大递增排列,下一层的都比上一层的小
- 结点的大小关系
- 树集不按添加的先后顺序排列,用
add方法添加结点
- 树集不按添加的先后顺序排列,用
- 常用方法
public boolean add(E o),向树集添加结点,结点中的数据由参数指定,添加成功返回true,否则返回falsepublic void clear(),删除树集中的所有结点public void contains(Object o),如果树集中有包含参数指定的对象,则返回true,否则返回falsepublic E first(),返回树集中的第一个结点中的数据public E last(),返回树集中的最后一个结点中的数据public boolean isEmpty(),判断是否是空树集,如果树集不含任何结点,则返回truepublic boolean remove(Object o),删除树集中的存储参数指定的对象的最小结点,删除成功返回true,否则返回falsepublic int size(),返回树集中结点的数目
- 树映射
- 使用
public V put(K key,V value)方法添加节点
- 使用
- 自动装箱与拆箱
教材学习中的问题和解决过程
- 问题1:LinkedList链表和ArrayList数组表有什么不同
- 问题1解决方案:通过ArrayList和LinkedList的区别明白二者的区别
代码托管

学习心得
- 本章知识点并不是很多,很多内容与数据结构课上所学的可以相结合,理解应用上来说相对前面所学内容较为简单

浙公网安备 33010602011771号