标签:子类 重复 alt 分享图片 实训 linked 一个 有序 src
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个元素下面。
标签:子类 重复 alt 分享图片 实训 linked 一个 有序 src
原文地址:https://www.cnblogs.com/goxxiv/p/8867236.html