20172320 2018-2019-1 《Java程序设计》第四周学习总结

时间:2022-03-15 19:21:31

20172320 2018-2019-1 《Java程序设计》第四周学习总结

教材学习内容总结

  • 链表是一种实现策略,使用引用来在对象之间创建链接;列表集合是一种概念性表示法,其思想是使事物以线性列表的方式进行组织,列表集合没有内在的容量大小,可以随需要而增大
  • 列表集合的三种类型
种类 描述
有序列表 其元素按照元素的某种内在特性进行排序
无序列表 其元素间不具有内在顺序,元素按照它们在列表中的位置进行排序
索引列表 其元素可以用数字索引来引用

索引列表和数组的根本区别在于:索引列表的索引值总是连续的

  • java.util.List接口中的一些方法
方法 描述
add(E element) 往列表的末端添加一个元素
add(int index, E element) 在指定索引处插入一个元素
get(int index) 返回指定索引处的元素
remove(int index) 删除指定索引处的元素
remove(E Object) 删除指定对象的第一个出现
set(int index, E element) 代替指定索引处的元素
size() 返回列表中的元素数量
  • 列表的使用:学习计划(无序),Josephus问题
  • 列表的常见操作
操作 描述
removeFirst 从列表里删除第一个元素
removeLast 从列表里删除最后一个元素
remove 从列表中删除某个元素
first 查看位于列表前端的元素
last 查看位于列表末端的元素
contains 确定列表是否含有某个元素
isEmpty 确定列表是否为空
size 确定列表中的元素数量
  • 有序列表和无序列表之间的差距通常主要体现在往列表添加元素
    有序列表中只需指定要添加的元素,该元素在列表的位置取决于其键值
    无序列表支持add的3个变体
操作 描述
addToFront 把元素添加到列表的前端
addToRear 把元素添加到列表的末端
addAfter 把元素添加到列表中某个已有元素的后面

教材中遇到的问题和解决过程

  • Serializable接口是个啥吧?
  • 解决方案:Java为我们提供一种很好保存对象状态的机制
    在什么情况下需要使用到Serializable接口呢??

  1、当你想把的内存中的对象状态保存到一个文件中或者数据库中时候;
  2、当你想用套接字在网络上传送对象的时候;
  3、当你想通过RMI传输对象的时候;
在对对象进行实例化的过程中相关注意事项
  a)序列化时,只对对象的状态进行保存,而不管对象的方法;
  b)当一个父类实现序列化,子类自动实现序列化,不需要显式实现Serializable接口;
  c)当一个对象的实例变量引用其他对象,序列化该对象时也把引用对象进行序列化;
  d)并非所有的对象都可以序列化

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

  • 问题1:void报错???
    20172320 2018-2019-1 《Java程序设计》第四周学习总结
  • 解决方案:完全没想到这个也能错,它给的提示是改成boolean型,接下来就不知道它到底要让我干嘛了。PP6.11的遇到,之前的6.7有类似的地方但没什么问题。后来发现是LinkedList有问题,我的LinkedList似乎太多了,不知道被弄成哪一个了,后来改成week4文件夹里的就行了
    20172320 2018-2019-1 《Java程序设计》第四周学习总结

    托管代码

    20172320 2018-2019-1 《Java程序设计》第四周学习总结

    上周考试错题总结

  • A linked implementation of a queue is facilitated by references to the ______ and ______ elements of the linked list.
    A .First, second
    B .First, middle
    C .Middle, last
    D .First, last
    分析:D

  • The first operation removes an element at the front of the queue and returns a reference to it.
    A .True
    B .False
    分析:B
    first是考察,不会删除

结对及互评

点评过的同学博客和代码

  • 本周结对学习情况
    20172327
    20172317
  • 结对学习内容
    阅读第6章节,运行教材上的代码
    完成程序设计项目PP6.8并测试、PP6.11并测试、PP6.17
    完成课后自测题,并参考答案学习

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 0/0 1/2 20/20
第二周 328/328 1/3 20/40
第三周 1597/ 1925 1/4 20/60

参考资料