List接口以及数据结构存储特点
一、简述list接口的特点
1、存取有序的集合
2、有索引值
3、元素可以重复
二、hashcode和equals方法
简述hashcode去除重复元素的原理
1、调用被添加元素的hashcode(),和hashset中已有元素的hashcode()进行比较
2、如果不同,直接存储
3、如果相同,调用equals方法比较是否相同
4、不相同,直接存储元素
5、相同,直接舍弃,不存储
三、数据结构
简述常见的数据结构中元素的存取特点
1、栈:stack,又称堆栈,对元素的存取特点是:先进后出。
即,存进去的元素,要在它后面元素一次取出后,才能取出该元素。
2、队列:queue,简称队,对元素的存取特点是:先进先出。
即:存进去的元素要在它前边的元素取出后才能取出。
3、数组:array,是有序的元素数列,对元素的存取特点是:
1)、查找元素快;通过索引值直接查找数组中的元素。
2)、增删元素慢;
(1)、指定索引位置增加元素,需要创建一个新的数组,将指定元素
存储在指定的索引位置,再把元素组元素根据索引复制到新数组对应索引的指定位置。
(2)、删除指定索引值的元素,需要建立一个新数组,将原数组里面的元素放到新数组中,
需要删除的指定索引值对应的元素,不放在新数组中。
4、链表:linkedlist,对元素存取特点:
1)、多个节点之间通过地址值进行连接。
2)、查找元素慢
3)、增删元素快
增加元素:只需要修改连接下一个元素的地址
删除元素: 只需要修改连接上一个元素的地址
四、comparable 和 comparator 比较器
简述comparable和comparator两个接口的区别
comparable:强行对实现它的每个类的对象进行整体排序。
这种顺序被称为类的自然顺序
类的compareto方法被称为自然的比较方法,只能在类中实现compareto()
一次,不能经常修改类的代码实现自己想要的顺序。
实现此接口的对象列表(和数组)可以通过collections.sort(和arrays.sort)进行自动排序
对象可以用作有序映射中的键或者有序集合中的元素,不用指定比较器。
comparator:强行对某个对象进行整体排序。
可以将comparator传递给sort方法(collections.sort或arrays.sort)
从而允许在排序顺序上实现精准控制
还可以使用comparator来控制某些数据结构(如有序set或有序映射)的顺序,
或者为那些没有自然顺序的对象collection提供排序。