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报错???
-
解决方案:完全没想到这个也能错,它给的提示是改成boolean型,接下来就不知道它到底要让我干嘛了。PP6.11的遇到,之前的6.7有类似的地方但没什么问题。后来发现是LinkedList有问题,我的LinkedList似乎太多了,不知道被弄成哪一个了,后来改成week4文件夹里的就行了
托管代码
上周考试错题总结
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
分析:DThe first operation removes an element at the front of the queue and returns a reference to it.
A .True
B .False
分析:B
first是考察,不会删除
结对及互评
点评过的同学博客和代码
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 1/2 | 20/20 | |
第二周 | 328/328 | 1/3 | 20/40 | |
第三周 | 1597/ 1925 | 1/4 | 20/60 |