第六章学习内容总结(列表)
教材学习内容总结
6.1链表集合:
- 列表集合是一种概念性表示法,使事物以线性列表的方式进行组织。
- 链表集合没有内在的容量大小,他可以随需要而增大。
- 链表结合分为:
- 有序列表:按照其元素内在的特性进行排序。//有序列表中的元素具有内在关联,这种关联定义了元素之间的顺序。
- 无序列表:其元素之间不具有内在的顺序,顺序为加入时的顺序。//无序列表的元素按照使用者所选择的方法排序。
- 索引列表: 元素用数字索引来引用。 //索引列表为他的元素维护一段连续的数字索引值。
6.2 java集合API中的列表
- list接口中的一些方法:
6.3 使用无序列表:学习计划
- 代码:
- 运行结果:
6.4索引列表使用实例:JosephUS问题
6.5列表ADT
- 代码:
6.6用数组实现队列
- 数组实现队列:
ArrayList - 数组实现的队列实现有序队列
OrderedArrayList - 数组实现的队列实现无序数组
UnorderedArrayList
6.7用链表实现对列
- 用队列实现对列
LinkedList
课本学习遇到的问题
- 问题一:课本P97页,串行化?
- 解答:为了理解串行化,我们将从三个方面来理解它:是什么,怎么用,注意什么。
- (前序)Serializable(用于串行化)接口中没有任何的方法。当一个类声明要实现Serializable接口时,只是表明该类参加串行化协议,而不需要实现任何特殊的方法。
- 什么是串行化?
对象的寿命通常随着生成该对象的程序的终止而终止。有时候,可能需要将对象的状态保存下来,在需要时再将对象恢复。我们把对象的这种能记录自己的状态以便将来再生的能力。叫作对象的持续性。对象通过写出描述自己状态的数值来记录自己 ,这个过程叫对象的串行化。 - 怎么串行化?
- 首先定义了一个类,实现了Serializable接口//课本中是course类实现了Serializable接口。
- 构造对象的输入/输出流//将对象的状态写入文件,再次打开再读取文件。
总的来说就是为了记录一个东西的原来的状态,先把它记录下来并写到文件,最后读取就行了。
- 注意事项:
- 串行化只能保存对象的非静态成员交量,不能保存任何的成员方法和静态的成员变量,而且串行化保存的只是变量的值,对于变量的任何修饰符都不能保存。
- 这样不是很安全,有可能有些private类型的数据被保留下来。
- 问题二:
int targetIndex = list.indexOf(target);//此中的list.indexOf()方法是干嘛的?
if (targetIndex != -1)
list.set(targetIndex, newCourse);
解答:此方法是javaAPI 中 java.util.List接口中的方法,作用是查到传入元素的索引,没有则返回-1.
- 问题三:这个东西是个啥玩意儿?
public Iterator<Course> iterator()
{
return list.iterator();
}
- 解答:为了得到一个对象,用于集合内部的遍历。
敲代码中出现的错误
- 在书上Josephus例子中,出现了小错误:
数字出来的顺序应该是:3 6 2 7 5 1 4 - 这个应该是每数三个数就删去一个,所以应该隔两个数,删一个。做法是:
targetIndex = skip;
、targetIndex = (targetIndex + skip) % list.size();
改成targetIndex = skip-1;
、targetIndex = (targetIndex + skip-1) % list.size();
代码托管
(上半年敲了7200行)
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 260/0 | 1/1 | 05/05 | |
第二周 | 300/560 | 1/2 | 13/18 | |
第三周 | 212/772 | 1/4 | 21/39 | |
第四周 | 330/1112 | 2/7 | 21/60 |