A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 厦门校区   /  2018-12-22 18:45  /  3101 人查看  /  36 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.List接口下都有哪些集合,他们各自有什么特点List接口下有ArrayList、LinkedList、Vector等集合。ArrayList集合的因为是数组结构所以查询快增删慢;LinkedList集合的因为是链表结构所以增删快查询慢;而Vector因为集合因为执行效率低被ArrayList取代但是相对性的它的安全性更高。
2.Set接口下的集合是如何保证无序不可重复的
是通过底层哈希表来实现的,当有数据存储时,会调用hashCode()方法去判断集合里面是否已经有了相同哈希值的元素,如果没有,就认为这个元素是没有重复的直接存储进来到对应的哈希值下面的链表中,如果有相同的哈希值元素,这时调用equals方法去比较两个元素的内容是否一致,一致的话就认为是同一元素不进行存储,否则就将该元素存储进相同的哈希值链表下,若某条链表元素达到8个之后该链表就会转换成红黑树,以提高元素查询效率。
3.我们为什么要重写HashCode( )和equals()方法?
因为Object类中的这两个方法比较的都是对象的地址值,这样的比较在想要实现比较属性内容的时候没有意义,需要通过重写这两个方法来达到自己想要实现的功能。
4.数据在存入Set集合的时候,是先判断HashCode()还是先判断equals(),为什么?
会先判断HashCode();因为set底层是通过哈希表来实现的,通过先判断哈希值是否相等再判断equals方法是否相等的方式去判断是否是相同元素。先判断哈希值再通过equals判断也能提高代码执行效率。
5.Comparable和Comparator两个接口的区别,哪种接口使用的多,为什么?

Comparable是对一个类中的所有对象进行默认排序,使用自己跟参数进行比较,也可以通过实现接口去重写方法进行自定义排序;Comparator是对其中一个对象进行比较,就像找了一个裁判去判定双方,也能自定义判断的方式;使用更多的是Comparator方法,因为Comparable的耦合度太高,在用的时候限制相对更大。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马