当创建ListTest类的实例的同时,初始化coursesToSelect的集合。
private String id=id;
public gatId(){
return id;
}
public setId(String id){
this id= id;
}
明白了,在调用get(i);方法的时候,是单独调用List中i位的元素
coursesToSelect 不是 courseToSelect 你少了个s ...
cr2是你试图往课程List的0号位置放课程,temp2是你从课程List中取出的0号位的课程。
前后两个操作,是为了对比你取出的0号位课程,是不是你之前试图往0号位放的课程一样。
这里用的是构造函数实例化coursesToSelect,也可以在其它方法中实例化。
课程中 没有看到哪里规定这个数字长度是2啊,只是添加了两门课程而已,不是可以一直添加吗?
List不需要定义长度,它的长度是根据储存的内容改变的
你的Course.java没有保存。。。
ListTest.java中12行应该为:
this.coursesToSelect = new ArrayList();
你那样写会报空指针异常,找不到cr1
一开始是一个空列表 → [ ]
coursesToSelect.add(cr1)
运行后,列表增加了元素 cr1。
现在的列表 → [ cr1 ]
此时 元素 cr1 的下标为 0 (下标从 0 开始),此时用 temp 读取位置 0 处的元素 即 cr1.
然后,运行后续的代码,到了
coursesToSelect.add(0,cr2);
会在位置 0 处插入 cr2, 然后原来的元素会位置后移。
现在的列表 → [ cr2 cr1 ]
此时,元素 cr2 的下标为 0,cr1 的下标变成了 1,此时用 temp2 读取位置0 处的元素 即 cr2.
1231232123123
看课程应该是后移了,用代码测试下
对的呀
co1的指向错了,是get(1)而不是get(0)
返回值不一样,没什么大区别吧
前面定义了 coursesToSelect 为一个 <Course> 型的 List public List<Course> coursesToSelect; 然后在构造器中将coursesToSelect初始化为ArrayList(); 也就是说 coursesToSele 首先是 List 然后才被初始化为ArrayList(); 不知道这样说你有没有明白
temp是为了接收从coursesToSelect中索引值为0的位置的对象,所以不需要new啥啥啥的。它是一个引用,这样说明白了吗。
可以的
补充Collection接口常用的具体内容
看看你的Course 有没有构造方法赋值
因为老师这里演示的是使用集合list的get()方法,temp用来接收get()返回的结果
为了证明你把它存进去了,
在输出的时候顺便把地址码一起输出了,最后用foreach循环输出courseToSelect中的内容,可以看出C语言的地址码是先输出的,所以C语言课程确实是第一个;只不过temp(数据结构课程)的输出语句在前面让你觉得它是第一个