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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 厦门校区   /  2018-6-23 20:59  /  2738 人查看  /  34 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

贾宗虎

1.List接口下都有哪些集合,他们各自有什么特点

  List接口下有: LinkedList,ArrayList,Vector
  LinkedList的特点是链表结构的集合,具有查找慢,增删快的特点,独有几个和头部尾部相关的方法,例如:getFirst(),removeFirst(),getLast(),removeLast()
  ArrayList是数组结构的集合,具有查找快,增删慢的特点.也是我们开发当中,使用最多的数据结构.
  Vector老师说这个效率太低,基本已经被淘汰了.

2.Set接口下的集合是如何保证无序不可重复的

  通过hashCode()方法和equals()方法
  首先当集合接受到一个数据的时候,用hashCode()方法判断数据的哈希值,是否在集合中已存在,如果没有,则存入集合中.如果有,在通过equals()方法比较,不一样则存入集合,一样的话则不存.

3.我们为什么要重写HashCode( )和equals()方法?

如果集合要接受的数据类型是自定义类的对象的话,这里有两种情况:
①默认比较的是地址值.一样则不存,不一样则存储在被比较元素的下面(以链表的形式,超过阈值转换为红黑树结构)
②自定义equals方法比较对象的成员变量是否一样,例如比较两个人,通常我们认为两个人是否是同一个人,看他们的姓名,身高,年龄等等属性是否一样.就需要重写equals方法.

4.数据在存入Set集合的时候,是先判断HashCode()还是先判断equals(),为什么?

  先判断hashCode(),获取接受元素的哈希值,判断集合里如果没有该值,就可以直接存进去,不需要equals()方法判断,提高存取效率

5.Comparable和Comparator两个接口的区别,哪种接口使用的多,为什么?

  Comparable是内比较器,定义在类中,重写继承过来的默认比较规则,适用于永不改变的规则.比较不灵活
  Comparator是外比较器,使用的比较多,因为更灵活.使用一般分两种情况:
    ①本身没有比较规则,但现在需要进行比较,使用外比较器
    ②本身有比较规则,但现在要用另一种规则进行比较,用外比较器



点评

腋太美同学很棒!  发表于 2018-6-24 21:46
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马