20162316刘诚昊 第五周学习总结

20162316刘诚昊 2017-2018-2 《Java程序设计》第五周学习总结

教材学习内容总结

  1. 集合(Collection)是收集并组织其他对象的对象,它定义了访问及管理称为集合元素的其他对象的一种具体方式。
  2. 集合分为线性集合与非线性集合。
  3. 栈是线性集合,采用FIFO的处理方式.接口中操作包含push, pop,peek,isEmpty,size,以及toString。
  4. 栈被常用在计算后缀表达式中,是最理想的数据结构。
  5. 使用数组实现栈时,当所创数组“满了”,使其自动扩张以保证其容量。
  6. 链表实现的栈在push操作中,每次调用都创建一个新节点。

教材学习中的问题和解决过程

  • 问题1:链表作为一个有序集合,LinkedList.add是将对象添加到链表的尾部。但一般情况下需要把元素添加到链表的中间或前端时便没有一个直接的操作方法,书上给的类帮助我们完成堆栈的编写,但并非能随便使用。那么如何完成类似在Array中的插入步骤?
  • 解决方法:
    1.在课上老师教给了我们将结点插入的方法。
    2.迭代器能描述集合中的位置,所以我想这种依赖于位置的add方法应该是由迭代器负责,在JDK中搜索Iterator看到其接口并没有add方法,但集合类库提供了子接口ListIterator,这个类的listIterator方法返回一个ListIterator的迭代器对象。

然后Add方法会在迭代器的当前位置添加一个新对象,例如:

List<Integer> number = new LinkedList<>();
number.add(0);
number.add(1);
number.add(3);
ListIterator<Integer> i = number.listIterator();
i.next; //跳过元素“0”
i.next;//跳过元素“1”
i.add(2); //在第三个元素前添加“2”

代码调试中的问题和解决过程

本章的代码调试内容遇到的问题已经在其他博客体现:
点此链接

结对及互评

20162326齐力峰
写的内容方面涉及很多,解决问题可以文字描述如何解决。

其他(感悟、思考等,可选)

这周的内容和上学期重复的挺多,但是新东西尤其是链表的掌握仍然需要大量练习。

计划学习时间:14小时

实际学习时间:9小时

改进情况:

《Java程序设计与数据结构教程(第二版)》

《Java程序设计与数据结构教程(第二版)》学习指导

posted @ 2017-10-15 23:26  20162316刘诚昊  阅读(217)  评论(0编辑  收藏  举报