全球旧事资料 分类
r
r
它使得Java编程更加简单,因此需要好好掌握。r
r
实际上以前听过一句话:程序数据结构算法。r
r
现在我们学编程语言时,我们只要学会用即可,会有NB人帮我写,我们只要用他们的就够了。r
r
集合,其实就是数据结构,只是由别人写好的数据结构,我们只要用就可以了。r
r
r
集合,就是容器。(瓶子、罐子、抽屉……)r
r
主要就是装东西、取东西、剔除东西、遍历……r
【原则】:根据现实生活中容器的功能,来找这些集合的方法。r
r
xxxAll:计算两个容器的并、交、差、判断是否包含。r
r
Collectio
容器r
r
r
r
遍历容器,有两种方式:r
r
1,JDK15才可用foreach,与遍历数组几乎是相同的。r
广义来说,数组也是一种容器。r
r
2,用Iterator迭代器。r
hasNext:判断是否还有下一个。r
ext如果有下一个,用
ext来获取下一个即可。r
remover
r
r
r
Collectio
代表最通用的容器,但实际上不同的容器可能有不同行为。r
r
还需要掌握不同容器、各自具体的行为特征。r
r
r
HashSet代表一个最普通的容器。r
r
元素无序。r
元素不能重复。r
r
HashSet不允许元素重复,怎么的两个元素算重复?r
r
标准为:r
A。两个对象通过equals比较返回true。r
B。并且两个对象的hashCode返回值也相等。r
r
Object本身提供了hashCode方法,但Object实现hashCode是根据对象的内存地址值计算得到的。r
对于Object的hashCode来说,只要是两个对象,内存地址肯定不同,因此它们的hashCode肯定也不同。r
r
因此我们需要重写hashCode方法,重写规则如下r
1)所有参与比较的属性,都要计算出它的hashCode值。r
所有引用类型,直接调用hashCode方法即可。r
byte、short、char、i
t直接当成i
t即可。r
boolea
型的field,true当成1;false当成0r
lo
g要用如下公示转换:i
tfieldfield32r
floatFloatfloatToI
tBitfield→i
t值r
double:DoubledoubleToLo
gBitfield→lo
g值r
i
tlo
glo
g32r
     2将各field的hashCode乘以一个质数后,相加计算它们的和。r
r
r
HashSet的高级内容r
r
HashSet的实现原理:r
r
HashSet本质就是依赖HashMap实现。r
r
误解:HashSet按“乱放”这些元素是错误r
好听全球资料 返回顶部