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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

1.List接口下都有哪些集合,他们各自有什么特点
List接口下都有ArrayList集合,LinedList集合,Vector集合。三个集合共同特点:1、元素有序,元素存入和取出顺序一致。2、有索引,内部包含了一些可以通过索引操作元素的方法。3、可存储重复的元素的。三个集合各自特点:ArrayList集合:多线程,底层是采用数组结构,数组有索引,所以查询快;数组长度不可变,所以增删慢。LinedList集合:多线程,底层采用双向链表结构,上个节点记录下个节点的地址值,增删元素对集合整体无影响,所以增删快,查询时每次都得从首地址开始查,所以查询慢。Vector集合:是单线程,所以线程安全,效率低。

2.Set接口下的集合是如何保证无序不可重复的。
Set接口底层是HashMap,采用哈希表方式进行存储元素,所有在存储元素会进行HashCode( )和equals()方法判断元素是否相同,先比较元素内容的Hash值是否不同,则存入元素,如果相同,则进一步进行equals()方法比较内容是否相同,相同则不存,不同则存储元素。所有Set接口下的集合元素都是无序不可重复的。

3.我们为什么要重写HashCode( )和equals()方法?
我们要保证HashSet和LinkedHashSet集合中元素的唯一性,所以要重写HashCode( )和equals()方法,让存储集合元素进行内容的比较,如果元素内容相同则不存,保证集合中的元素唯一,不重复。

4.数据在存入Set集合的时候,是先判断HashCode()还是先判断equals(),为什么?
数据在存入时,是先将重写的HashCode()进行比较,因为equals()方法比较效率低,重写的HashCode()比较可以初步对元素的内容的Hash值进行比较,如果hash值不同则存储进行,如果相同则再用重写的equals()方法进一步比较判断内容是否相同。这样可以提高比较效率。

5.Comparable和Comparator两个接口的区别,哪种接口使用的多,为什么?
Comparable和Comparator区别:Comparable接口是对实现它的每个类对象按自定义的排序方式进行整体排序。Comparator
接口是对实现它的某个对象进行按自定义的排序方式进行整体排序。Comparator接口使用的多,Comparable的耦合性高,我们在使用的要遵循低耦合,高内聚,使用一般使用耦合性低的Comparator相对多点。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马