黑马程序员技术交流社区

标题: 关于集合的问题 [打印本页]

作者: 宋美成    时间: 2014-4-2 14:13
标题: 关于集合的问题
本帖最后由 宋美成 于 2014-4-2 17:15 编辑

我有个小问题,视频里说只有List集合具备迭代功能,但是为啥在后面的Set集合中也用了迭代器Iterator呢?这不是矛盾了吗

作者: 无道    时间: 2014-4-2 14:34
它们都是collection接口的小弟,(已知子类接口)
作者: 一世英明    时间: 2014-4-2 14:44
视频老师口误吧!!
我给你分析一下List集合和  Set集合的异同点吧!!
首先他们都是单列元素的集合,所以,他们有一个共同的父接口,叫Collection.
Set里面不允许有重复的元素,所谓重复,即不能有两个相等(注意,不仅仅是相同)的对象,
即假设Set 集合中有一个A对象,现在我要向Set集合再存入一个B对象,但B对象与A对象equals
相等
则B对象存储不进去,所以,Set集合的add()方法有一个boolean的返回值,当集合中没有某个元素,
此时add方法可成功加入该元素时,则返回true,
Set取元素是,没法说取第几个,只能以Iterator 接口取得所有的元素,在逐一遍历各个元素;

List: 表示有先后顺序的集合,注意,不是那种按年龄,按大小,按价格之类的排序.当我们多次调用
add()方法时,每次加入的对象就像火车站买票有排队顺序一样,按先来后到的顺序排序.有时候,也可以
插队,即 调用 add(int index,Object obj) 方法,就可以指定当前对象在集合中的存放位置.有时候,
一个对象可以被反复存储进List中,每调用一次add方法,这个对象就被插入进集合中一次,其实,
并不是把这个对象本身存储进了集合中,而是在集合中用一个索引变量指向这个对象当这个对象
被add多次时,即相当于集合中有多个索引指向了这个对象,List 除了可以以Iterator  接口取
得所有的元素,再逐一遍历各个元素之外,还可以调用get(index i) 来明确说明取第几个.



作者: 1453149997    时间: 2014-4-2 16:56
正确的说法是只要是实现了迭代器接口Iterator或者ListIterator的类就可以被迭代;
视屏里难免会出现一些口误,但是你能听得很仔细并能产生怀疑这点就很不错,说明你已经具备了自学的一些特质
作者: 宋美成    时间: 2014-4-2 17:13
一世英明 发表于 2014-4-2 14:44
视频老师口误吧!!
我给你分析一下List集合和  Set集合的异同点吧!!
首先他们都是单列元素的集合,所以,他们 ...

恩,明白了,谢谢
作者: 宋美成    时间: 2014-4-2 17:14
1453149997 发表于 2014-4-2 16:56
正确的说法是只要是实现了迭代器接口Iterator或者ListIterator的类就可以被迭代;
视屏里难免会出现一些口 ...

明白了,谢谢
作者: 素质    时间: 2014-4-23 02:48
楼主看的是哪个视频?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2