黑马程序员技术交流社区
标题: 集合框架问题? [打印本页]
作者: 全海波 时间: 2012-9-6 17:33
标题: 集合框架问题?
问题阐述如图中所诉:
作者: 郑义 时间: 2012-9-6 17:54
本帖最后由 郑义 于 2012-9-6 17:56 编辑
|--Set:元素是无序(存入和取出的顺序不一定一致),元素不可以重复。、
|--HashSet:底层数据结构是哈希表。是线程不安全的。不同步。
HashSet是如何保证元素唯一性的呢?
是通过元素的两个方法,hashCode和equals来完成。
如果元素的HashCode值相同,才会判断equals是否为true。
如果元素的hashcode值不同,不会调用equals。
注意,对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashcode和equals方法。
|--TreeSet:
所以,分析你的程序代码要首先分析你的两个字符串对象的HashCode是不是相同。
根据API:
public int hashCode()返回此字符串的哈希码。String 对象的哈希码根据以下公式计算: s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
使用 int 算法,这里 s 是字符串的第 i 个字符,n 是字符串的长度,^ 表示求幂。(空字符串的哈希值为 0。)
发现,你的两个字符串对象转换成字符数组之后,其数组中的每个元素都是相同的。
根据上边的计算公式可知,两个HashCod是相同的。所以判断两个元素为相同元素。
作者: 郑小杰 时间: 2012-9-6 17:56
技术分24分问这种问题?
作者: 全海波 时间: 2012-9-6 18:43
郑小杰 发表于 2012-9-6 17:56
技术分24分问这种问题?
不知道该问些什么了?我问比较高级的有没几个人回答我,你说我该怎么办呢?
作者: 郑小杰 时间: 2012-9-6 18:57
全海波 发表于 2012-9-6 18:43
不知道该问些什么了?我问比较高级的有没几个人回答我,你说我该怎么办呢? ...
:)哥们,你要清楚你问问题的目的是什么
作者: 全海波 时间: 2012-9-6 19:24
郑小杰 发表于 2012-9-6 18:57
哥们,你要清楚你问问题的目的是什么
本来不想这么问,但今天很无聊呀!就给一些人创造机会!嘿嘿
作者: 朱晓杰 时间: 2013-5-9 23:03
郑义 发表于 2012-9-6 17:54
|--Set:元素是无序(存入和取出的顺序不一定一致),元素不可以重复。、 |--HashSet:底层数据结构是 ...
顶一个!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |