实训17 2018.04.17
Posted goxxiv
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实训17 2018.04.17相关的知识,希望对你有一定的参考价值。
Collection及其部分子类:
List的特点:有索引,有序(按照存入顺序进行输出),可出现重复元素;
Set的特点:没有索引,没有重复元素,不一定有序(HashSet的存储是无序的,LinkedHashSet的存储是有序的)。
List有三种遍历方式:
for(int ),foreach,Iterator;
而Set没有第一种,因为它没有索引。
Set:
对于Set作些说明:
Set的实现类HashSet使用到hashcode()方法。
hashcode()方法:
Object中的hashcode()方法:
用native修饰,没有给出实现的具体代码。
String中的hashcode()方法:
在代码中,hash的初始值为0,value是传入的字符串的字符数组(private final char value[])表示,例如"abc"存入value[]中,那么value[0]=‘a‘,value[1]=‘b‘,value[2]=‘c‘。经过判断之后,令val[]=value[],进行循环:h=31*0+97=97,(其中,97是‘a‘的ASCII值);h=31*97+98=3105,(其中,98是‘b‘的ASCII值);h=31*3105+99=96354。这就是“abc”的hashcode()得到的值。
结果如下:
HashSet使用数组加链表的存储结果。当使用HashSet存储时,初始设置数组长度为16。对第一个元素“a”进行添加时,计算“a”的hashcode()值为97,97mod16=1。数组的第一个位置下面链接的链表中没有“a”这个值,所以把这个值链接在第1个元素下面。
以上是关于实训17 2018.04.17的主要内容,如果未能解决你的问题,请参考以下文章