A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李志广 中级黑马   /  2012-8-1 23:11  /  1783 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李志广 于 2012-8-2 07:56 编辑

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

4 个回复

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