1.Set接口下的集合是如何保证无序不可重复的
Set集合是用哈希表存储元素的所以是无序的;
Set在添加元素的时候 会先获取元素的哈希值,通过哈希值计算存储位置,再判断该位置是否有元素,没有元素直接添加;如果有元素,遍历比较所有元素分别比较哈希值和内容,只有哈希值不同或者内容不同时才会添加元素,所以元素是不重复的;
2.我们为什么要重写HashCode( )和equals()方法?
HashCode()和equals()默认继承至Object;Object的计算和比较方式通常都不能满足我们的需求,所以需要重写;
3.数据在存入Set集合的时候,是先判断HashCode()还是先判断equals(),为什么?
先判断HashCode(),因为两个元素的HashCode()不同时其内容一定不相同;可以直接存入Set中
4.Comparable和Comparator两个接口的区别,哪种接口使用的多,为什么?
Comparable定义在类的内部;Comparator 定义在类的外部;
Comparator使用的比较多,使用Comparator定义的比较方式不会影响类本身的属性,可以降低耦合性
5.什么是泛型?使用泛型有什么好处?
泛型是JDK5中引入的特性,它提供了编译时类型安全检测机制,该机制允许在编译时检测到非法的类型
它的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。
泛型的好处:
- 把运行时期的问题提前到了编译期间
- 避免了强制类型转换 |