1.List接口下都有哪些集合,他们各自有什么特点List接口下有ArrayList,LinkedList
ArrayList的特点是底层是数组结构,查询速度快,增删速度慢;
LinkedList的特点是底层是链表结构,查询速度慢,增删速度快;
2.Set接口下的集合是如何保证无序不可重复的
Set接口下的集合的无序说的是存取顺序不同,这是因为Set接口下的集合是通过哈希值来存放存储的元素,把每个元素存放在对应的哈希值位置处.
取出时安装特定的规则取出,去存储的顺序无关,这就实现了集合的无序性.
Set接口下的集合通过重写HashCode方法和equals方法来实现他的不可重复性;
3.我们为什么要重写HashCode( )和equals()方法?
因为默认的HashCode()方法和equals()方法是比较地址值,无法根据元素的内容进行深一步的比较,无法保证存储元素的不可重复性,所以需要重写;
4.数据在存入Set集合的时候,是先判断HashCode()还是先判断equals(),为什么?
首先判断HashCode()方法,因为哈希值不同2个元素肯定不同,所以先获取哈希值进行判断,提高效率;
而当哈希值相同的情况下,两个元素的内容有可能不同,所以这时候还需要进行equals()判断.
5.Comparable和Comparator两个接口的区别,哪种接口使用的多,为什么?
Comparable是强行对实现它的每个类的对象进行整体排序,。这种排序被称为类的自然排序,类的compareTo方法
被称为它的自然比较方法。只能在类中实现compareTo()一次,不能经常修改类的代码实现自己想要的排序
Comparator强行对某个对象进行整体排序。可以将Comparator 传递给sort方法(如Collections.sort或
Arrays.sort),从而允许在排序顺序上实现精确控制
|