Collection常见的方法:

dce7b77e8b59bd64cb8d41f67c53affd_MD5

set都可以使用.

Set是一个interface:

Set<String> s = new HashSet<>();

add的返回值:表示原有集合中是否有某个元素.

Set的几个子类的toString方法是重写了的,可以直接打印

51afe40b4ddb077adf18c00d2ebb5cff_MD5

139c752eef84ae2091711d2fb2b93e07_MD5

91c8a95d3755b90545ff16fb83d7359d_MD5

tip:为什么是&

? 因为这样可以使得index肯定小于数组长度-1.源码就是这么写的 事实上,这是一种非常常见的方式。我们阅读下面可以发现,数组长度-1的二进制数一定都是11111…从而,达到了对哈希值取模的作用。 为什么不直接取模?因为直接用%的话,编译器并不知道数组长度-1这个值的特性,因此无法优化成位运算。hashCode():Object中的方法,返回一个整数,表示对象的哈希值

ad50631fddb817b54ace9a6b8c18f183_MD5

重写的时候,一般来说,需要让属性值相同的不同对象Hash值一样.可以右键帮我们重写:

3652e1563831429d2396feb3af98f2fc_MD5

f35fc88873aa82838730f38e86371cde_MD5

重写之后这两者hash值就是一样的.有没有哈希碰撞的例子?有:

88b22c604e983079cd3da62f7b3a2e48_MD5

这两者就是一样的.