黑马程序员技术交流社区

标题: 集合问题? [打印本页]

作者: 李志广    时间: 2012-8-1 23:11
标题: 集合问题?
本帖最后由 李志广 于 2012-8-2 07:56 编辑

看了毕老师的集合视频,有一些疑问:List集合判断唯一性,需要的条件是:equals 方法而HashSet判断唯一性是HashCode和equals 方法,当HashCode和equals 都为true时才能保证唯一性。
我想问的是:List集合判断唯一性条件只有一个,在实际的开发中是不是比HashSet更常用?或者来说List集合会更方便吗?在实际中应该怎样应用呢?

作者: 余明辉    时间: 2012-8-1 23:23
List集合里面的元素是可以重复的,因为底层数据一个是数组,一个是链表,都是有序的排列,所以可以重复
实际开发经常都是增删改查的多,如果查阅情况比较多的话,就用ArrayList,因为底层是数组的结构,可以直接通过下标直接定位到你想查询的那个元素。而如果修改的操作比较多的话,就用LinkedList,因为是链表结构,就像很多人手拉手站在一起一样,你改动其中一个,对其他的大部分的元素都没有影响。
作者: 杜佳瑞    时间: 2012-8-1 23:23
支持一下楼主,这一块我学的也挺模糊,大多数类中都有个一hashCode方法,每个类创建对象时都会自动调用这个函数获得一个地址值吗?是一定会调用吗?
作者: hello world    时间: 2012-8-1 23:25
这就是因为list和set集合的区别了,list可以存储相同的元素而set集合内不能有相同的元素。当使用HashSet时,hashCode()方法就会得到调用,判断已经存储在集合中的对象的hash code值是否与增加的对象的hash code值一致;如果不一致,直接加进去;如果一致,再进行equals方法的比较,equals方法如果返回true,表示对象已经加进去了,就不会再增加新的对象,否则加进去。
作者: 李志广    时间: 2012-8-2 07:56
呵呵,明白了很多!!!谢谢,问题已解决!!!!!!!




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