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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

©   /  2018-8-14 20:49  /  5736 人查看  /  49 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.List接口下都有哪些集合,他们各自有什么特点?
ArrayList集合查找快,增删慢;
LinkedList集合1.底层是一个链表结构,查找慢,增删快。里面包含大量操作首尾元素的方法。
2.Set接口下的集合是如何保证无序不可重复的?
        调用被添加元素的hashCode(),和HashSet中已有元素的hashCode比较是否相同;
        如果不相同,直接存储;
        如果相同,调用equals方法比较是否相同;
        不相同,直接存储元素;
        相同,认为是同一元素.不存储。
3.我们为什么要重写HashCode( )和equals()方法?
        方法默认比较的是两个对象的地址值,无意义,所有需要重新写。
4.数据在存入Set集合的时候,是先判断HashCode()还是先判断equals(),为什么?
        先判断HashCode后判断equals,程序判断HashCode所需资源更少。
5.Comparable和Comparator两个接口的区别,哪种接口使用的多,为什么?
Comparator强行对某个对象进行整体排序。可以将Comparator 传递给sort方法(如Collections.sort或 Arrays.sort),从而允许在排序顺序上实现精确控制。还可以使用Comparator来控制某些数据结构(如有序set或有序映射)的顺序,或者为那些没有自然顺序的对象collection提供排序。
Comparable:强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的compareTo方法被称为它的自然比较方法。只能在类中实现compareTo()一次,不能经常修改类的代码实现自己想要的排序。实现此接口的对象列表(和数组)可以通过Collections.sort(和Arrays.sort)进行自动排序,对象可以用作有序映射中的键或有序集合中的元素,无需指定比较器。
Comparator是第三方,也就是比较器,不需要实现接口,灵活制定比较规则,除非遇到高频率排序的类否则只需要用Comparator即可。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马