唐杰
1.List接口下都有哪些集合,他们各自有什么特点ArrayList(数据结构为数组结构,具有查找快,增删慢,效率高,安全性较低的特点)
LinkedList(数据结构为链表结构,具有查找慢,增删快,具有大量操作内容元素头尾的方法)
Vector(安全性高,效率低)
2.Set接口下的集合是如何保证无序不可重复的
主要通过hashCode和equals方法确保不可重复及无序,存储到set集合中的时候,先通过hashCode判断该位置是否有元素,如果没有才会进行存储,如果有的话,再进行equals判断内容是否一致(前提需要重写,否则对比地址值),不一样的情况下,才会进行存储.
3.我们为什么要重写HashCode( )和equals()方法?
在对比对象的时候,如果没有重写HashCode( )和equals()方法,默认对比的是地址值,如果我们需要对比对象的具体的成员属性,则需要重写该方法.
4.数据在存入Set集合的时候,是先判断HashCode()还是先判断equals(),为什么?
存入Set集合的时候,先判断hashCode,因为需要先确认hashCode的值是否已经存在set集合中,如果不存在则直接存储,存在的话再进行内容比较判断是否存储.
5.Comparable和Comparator两个接口的区别,哪种接口使用的多,为什么?
Comparable是在定义类中的时候,去实现comparable接口,并重写compareTo方法.特点较为固定,后期不便于去修改比较规则,适合固定比较规则的需求下使用.
Comparator是在定义类中,没有实现内部比较器的情况下,在需要比较的时候,通过匿名内部类去调用并重写compare方法,特点比较灵活,需要改变规则的时候可以不涉及到修改源码而且随时使用的特点.
|