1、set 集合用增强 for 循环的简便方法是是什么?
set.for
2、哈希值是什么?哈希值的作用是什么?
答:哈希值是系统给出的十进制地址;
Object类中就有hashCode()方法;
输出对象本身就等同于输出对象.toString()等同于对象.hashCode();
String类改写了哈希值,让两个相同的字符串相等,就相当于它们的哈希值相等。
哈希值可以用来构造HashSet 的数据结构;
3、HashSet 集合的数据结构是什么?
JDK1.8 之后是数组+红黑树;
哈希值不同的元素放在数组中不同的位置上;
哈希值相同的元素放在数组中某个位置的树上。
4、为什么HashSet 里面存的元素都是不同的?
哈希值和equals方法双重保证;
哈希值不同,那么存的元素一定不同;
如果哈希值相同,那么在看看哈希值相同的对象equals 对方是否返回 true;
使用前提:元素对象所用的类重写了hashCode()方法和equals()方法;
这两个方法alt+insert是有快捷重写的;
5、LinkedHashSet具有可预知的迭代顺序。什么是可预知的迭代顺序?
可预知的迭代顺序对应着不可预知的迭代顺序;
哈希表即HashSet中add元素后,打印集合显示的元素并不一定按照add的顺序来;
LinkedHashSet中add元素后,打印的集合显示的元素一定按照add的元素来;
6、LinkedHashSet是set接口的哈希表和链接列表实现。什么是链接列表?
链接列表就是链表;
哈希表 = 数组+链表/红黑树;
LinkedHashSet = 哈希表+链表;
这个链表是用来记录元素的存储顺序;
7、LinkedHashSet维护着一个运行于所有条目的双重链接列表。什么是双重链接列表?
双重链接列表 = 双向链接列表
双重链接链表