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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

1.List接口下都有哪些集合,他们各自有什么特点
ArrayList集合和LinkedList集合,ArrayList集合查找快,增删慢,存储的结构是数组结构。LinkedList集合存储的是链表式结构,方便元素添加,删除。
2.Set接口下的集合是如何保证无序不可重复的?
依赖于hashcode方法和equals方法实现不可重复,先判断对象的哈希值是否相同,再判断对象内容是否相同。
3.我们为什么要重写HashCode( )和equals()方法?
为了保证集合中元素唯一,如果集合中存入的是自定义的对象,那么久必须重写HashCode()和equals()方法建立属于当前对象的比较方式。
4.数据在存入Set集合的时候,是先判断HashCode()还是先判断equals(),为什么?
先判断HashCode(),才能知道此位置是否为空,元素存在后才能进行对比。
5.Comparable和Comparator两个接口的区别,哪种接口使用的多,为什么?
Comparable强行对实现它的每个类的对象进行整体排序。
Comparator强行对某个对象进行整体排序。
Comparator接口使用的多,因为比较灵活,在排序上可以精确控制。




回复 使用道具 举报
本帖最后由 赖熙蒙 于 2018-12-22 21:41 编辑

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

答:ArrayList:ArrayList集合数据存储的结构是数组结构。元素增删慢,查找快。
LinkedList:LinkedList集合数据存储的结构是链表结构。元素增删快,查找慢。


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

答:HashSet集合根据对象的哈希值来确定元素在集合中的存储位置,通过调用hashCode和equals方法来保证集合无序不可重复。

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


答:给HashSet中存放自定义类型元素时,需要重写对象中的hashCode和equals方法,建立自己的比较方式,才能保证HashSet集合中的对象唯一。

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


答:先判断HashCode()再判断equals()。因为Set集合中,哈希值不相同内容就一定不相同,能够提高判断的效率,而内容不相同哈希值有可能相同。先判断哈希值是否相同,如果不相同就直接放入集合,如果相同就继续判断内容是否相同。

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


答:Comparable接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的compareTo方法被称为它的自然比较方法。只能在类中实现compareTo()一次,不能经常修改类的代码实现自己想要的排序。  
Comparator接口强行对某个对象进行整体排序。Comparator接口用的比较多,因为Comparator接口相对比较灵活,可以将Comparator 传递给sort方法,从而允许在排序顺序上实现精确控制。还可以使用Comparator来控制某些数据结构的顺序,或者为那些没有自然顺序的对象collection提供排序。  



回复 使用道具 举报
1.List接口下都有哪些集合,他们各自有什么特点 ?

List接口下面有 三个主要的实现类集合,分别是我们常用的Arraylist集合,LinkedList集合,还有一个元老级的集合Vector集合。其中,Arraylist集合底层源码是数组,所以它查询快,增删慢;LinkedList集合底层源码是链表结构,所以它增删快,查询慢;Vector集合底层源码是数组和单线程,与ArrayList类似,所以这个集合删减也是比较慢。

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

Set接口是通过哈希表来确保的,准确的说其实就是根据对象的hashCode和equals方法来判定的,每个元素都有固定的哈希值,哈希值不同的对象一定不相同,哈希值相同的对象不一定相同,所以要再根据equals方法来判定。

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

用来确保集合里面没有重复的元素,以及优化性能。因为每个元素都有固定的哈希值,哈希值不同的对象一定不相同,哈希值相同的对象不一定相同,所以要再根据equals方法来判定。其中因为equals方法太消耗系统性能,因此引进HashCode方法来为系统进行大部分的优化。

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

先判断HashCode(),因为HashCode()方法比equals()方法更不消耗内存,而且哈希值不同的对象一定不相同,哈希值相同的对象不一定相同,所以先判断HashCode()方法。

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

Comparable接口需要在参数类里面进行重写方可使用,因为它是通过this和参数进行对比比较的。Comparator接口可以使用匿名类直接创建重写方法,它是通过相当于第三方中介来为参照物进行比较的,即匿名重写两个变量进行比较为规则。

Comparator用的比较多,因为Comparator可以直接在编码过程中创建匿名对象来新增排序规则,相对于Comparable接口要先对参数类进行实现接口再重写方法更方便。

============================================huangcc黄成成
回复 使用道具 举报 1 0
1.List接口下都有哪些集合,他们各自有什么特点 ?

List接口下面有 三个主要的实现类集合,分别是我们常用的Arraylist集合,LinkedList集合,还有一个元老级的集合Vector集合。其中,Arraylist集合底层源码是数组,所以它查询快,增删慢;LinkedList集合底层源码是链表结构,所以它增删快,查询慢;Vector集合底层源码是数组和单线程,与ArrayList类似,所以这个集合删减也是比较慢。

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

Set接口是通过哈希表来确保的,准确的说其实就是根据对象的hashCode和equals方法来判定的,每个元素都有固定的哈希值,哈希值不同的对象一定不相同,哈希值相同的对象不一定相同,所以要再根据equals方法来判定。

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

用来确保集合里面没有重复的元素,以及优化性能。因为每个元素都有固定的哈希值,哈希值不同的对象一定不相同,哈希值相同的对象不一定相同,所以要再根据equals方法来判定。其中因为equals方法太消耗系统性能,因此引进HashCode方法来为系统进行大部分的优化。

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

先判断HashCode(),因为HashCode()方法比equals()方法更不消耗内存,而且哈希值不同的对象一定不相同,哈希值相同的对象不一定相同,所以先判断HashCode()方法。

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

Comparable接口需要在参数类里面进行重写方可使用,因为它是通过this和参数进行对比比较的。Comparator接口可以使用匿名类直接创建重写方法,它是通过相当于第三方中介来为参照物进行比较的,即匿名重写两个变量进行比较为规则。

Comparator用的比较多,因为Comparator可以直接在编码过程中创建匿名对象来新增排序规则,相对于Comparable接口要先对参数类进行实现接口再重写方法更方便。

===============================黄成成
回复 使用道具 举报
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相对多点。
回复 使用道具 举报
1.List接口下都有哪些集合,他们各自有什么特点
ArrayList的特点:底层是数组结构,查询速度快,增删速度慢;
LinkedList的特点:底层是链表结构,查询速度慢,增删速度快;

2.Set接口下的集合是如何保证无序不可重复的
       当向set接口下的集合添加元素时,编译器会计算该元素的hashcode,按照hash值找到元素存储的内存区域,这样元素的存储就是无序的;同时,如果该元素的hash和集合内的某个元素一样,则调用equals方法对这两个元素进行比较,如果一致则不把该元素加入到集合中,这样就保证了元素不重复。

3.我们为什么要重写HashCode( )和equals()方法?
        因为默认的HashCode()方法和equals()方法是比较地址值,无法根据元素的内容进行深一步的比较,无法保证存储元素的不可重复性,。为了保证数据的唯一性,需要重写HashCode( )和equals()方法。

4.数据在存入Set集合的时候,是先判断HashCode()还是先判断equals(),为什么?
      首先判断HashCode()方法,因为哈希值不同2个元素肯定不同,所以先获取哈希值进行判断。
而当哈希值相同的情况下,两个元素的内容有可能不同,所以这时候还需要进行equals()判断.

5.Comparable和Comparator两个接口的区别,哪种接口使用的多,为什么?
    Comparator用的比较多。
       虽然用Comparable 简单, 只要实现Comparable 接口的对象直接就成为一个可以比较的对象,
但是需要修改源代码, 而用Comparator 的好处是不需要修改源代码, 而是另外实现一个比较器, 当某个自定义
的对象需要作比较的时候,把比较器和对象一起传递过去就可以比大小了, 并且在Comparator 里面用户可以自
己实现复杂的可以通用的逻辑,使其可以匹配一些比较简单的对象,那样就可以节省很多重复劳动了。




回复 使用道具 举报
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的耦合度太高,在用的时候限制相对更大。
回复 使用道具 举报
1.List接口下都有哪些集合,他们各自有什么特点
ArrayList: 底层是数组,查询快,增删慢
LinkedList:底层是链表,查询慢,增删快;首尾查询快,有许多与首尾相关的方法
Vector: 安全性高;时间比较久,逐渐被ArrayList取代

2.Set接口下的集合是如何保证无序不可重复的
无序:存储时通过不同的哈希值进行对应的保存,在取出时是按照特定的规则取出
不重复:
(1)首先,equals()方法可以对对象内容进行比较,但是效率低下;
(2)可以通过HashCode方法和哈希值对equals()方法进行优化;
(3)在调用equals()方法前,先判断哈希值,通过重写HashCode方法获得根据对象内容生成的一串哈希值;
(4)如果哈希值不相等,那么这两个对象的内容肯定不同,直接添加到集合中;
        如果哈希值相等,那么这两个对象的内容有可能不同,调用equals()方法对这两个对象的内容进行比较,如比较结果不同,将此内容添加到同一个哈希值下的槽中

3.我们为什么要重写HashCode( )和equals()方法?
因为要确保set集合存储不重复的元素的前提,就是要重写HashCode( )和equals()方法,Object中的HashCode( )方法默认获取的是模拟的地址值,我们需要重写HashCode( )方法,让其根据对象的内容生产一串哈希值,再比较哈希值,快速判断两个对象的内容是否相同,如哈希值相同,就需要调用equals()方法,而equals()方法默认比较的是地址值,需要重写才能让其比较属性内容,最终达到存储元素不重复的效果。

4.数据在存入Set集合的时候,是先判断HashCode()还是先判断equals(),为什么?
先判断HashCode( ),因为如果使用equals()方法,效率低下,对此引入了HashCode( )、哈希值进行优化,通过先判断两个元素的哈希值可以提高运行效率

5.Comparable和Comparator两个接口的区别,哪种接口使用的多,为什么?
Comparable:排序的规则在类中已经规定完成,不能及时根据自身需求更改排序规则;调用是比较简单,可以通过Collections.sort进行排序
Comparator:可以在调用时根据自身需求更改排序规则;调用时格式相对复杂,需要指定比较器
Comparator接口用得多,因为Comparato在排序顺序上实现精确控制,还可以使用Comparator来控制某些数据结构(如有序set或有序映射)的顺序,或者为那些没有自然顺序的对象collection提供排序。
回复 使用道具 举报
1.List接口下都有哪些集合,他们各自有什么特点今天学到的List接口下的集合有3种。Arraylist集合,LinkedList集合,Vector集合;Array list是最常用的,但底层使用的是数组的原理,有索引所以查询快,增删元素时需要复制元素到新集合,所以增删慢。LinkedList集合是双向链表的结构,查询需要从头逐个获取元素,所以查询慢,但是增删快,而且包括了很多增删头尾元素的方法,需要频繁添加删除元素操作的可以使用这个类型的集合。Vector集合是相对比较古老的集合,比较少用,安全性比较高。

2.Set接口下的集合是如何保证无序不可重复的
Set接口下的集合底层原理是使用的哈希表进行存储元素的,哈希表的构造原理由:数组,链条,红黑树组成,所以元素的储存是无序的。当在添加新元素的时候,会先使用hashCode判断元素的哈希值是否相同,不同的情况下将元素直接添加到横向的数组单元格中,当对象的哈希值一样的情况下再使用equals方法对比元素属性是否都一致,只有在不相同的情况下才会将元素添加到竖列的链表中成功,并且在竖列链表数量超过8个的时候,会自动转换为红黑树来存储,保证了更快的查询速度,所以它是不可重复的。

3.我们为什么要重写HashCode( )和equals()方法?
在没重写默认的情况下,我们只能够判断两个对象或集合的地址值是否相同,并不能满足于判断属性是否也都相同,并且当在向HashSet集合添加元素的时候也需要通过HashCode方法去判断哈希值是否相同,不同才添加,哈希值相同的情况下,再使用equals方法比较属性是否相同,不同才能完成添加,这些功能的实现都需要我们去重写自定义Hash Code和equals方法。

4.数据在存入Set集合的时候,是先判断HashCode()还是先判断equals(),为什么?
先判断的HashCode,再判断equals。先使用Hash Code来比较地址值是否相同,因为地址值不同的情况下,元素的属性必然不同,就无需再判断equals,即可将元素添加到集合中,更加快速高效。

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


Comparable是通过对compareTo方法进行重写,可以对它所有的实现类提供制定好的一套排序规则,当很多集合或对象的时候有固定的排序规则就可以使用这个接口,一次定义,全部受用。
Comparator可以给单独的对象或集合,定义专属于它的一套排序规则,当元素没有什么自然顺序的情况下,会更多的使用这个方法,自定义排序规则,多重排序规则。
根据自己的使用需求,一般Comparator会使用得更多一些,毕竟它可以对不同对象实现不同的自定义排序规则,更加灵活。
回复 使用道具 举报


1.List接口下都有哪些集合,他们各自有什么特点
1.LinkedList   底层是一个链表数据结构 查询慢,增删快
2.ArrayList    底层是一个数组数据结构   查询快,增删慢
3.Vector      老数据结构,安全性高
2.Set接口下的集合是如何保证无序不可重复的
前提: 存储的元素必须重写hashCode方法和equals方法
1,先用 HashCode 方法进行比较,如果哈希值相同在使用 equals()方法 可以对对象的内容进行判断
如果不同 表示不重复, 如果相同表示重复
3.我们为什么要重写HashCode( )和equals()方法?
保证元素唯一性的方式依赖于:hashCode与equals方法。
4.数据在存入Set集合的时候,是先判断HashCode()还是先判断equals(),为什么?
先判断哈希值,如果哈希值不同,没有必要去判断equals方法, 如果哈希值相同,在使用equals方法判断内容是否相同,所以 HashCode先判断
5.Comparable和Comparator两个接口的区别,哪种接口使用的多,为什么?
Comparable:自己(this)和别人(参数)比较,自己需要实现Comparable接口,重写比较的规则compareTo方法
Comparator:相当于找一个第三方的裁判,比较两个
用Comparator 的好处是不需要修改源代码, 而是另外实现一个比较器.
回复 使用道具 举报
1.List接口下都有哪些集合,他们各自有什么特点
ArrayList/vector(线程安全)===>底层是数组,查询快,增删慢
LinkedList===>底层是链表,查询慢,增删快

2.Set接口下的集合是如何保证无序不可重复的
通过重写hashCode方法和equals方法,在比较equals方法之前,先判断哈希值,通过重写的hashCode生成一串哈希值,如果哈希值不同,则直接存集合,如果哈希值相同,但内容不同,产生哈希值相同,就要进行equals比较。

3.我们为什么要重写HashCode( )和equals()方法?
保证了元素的不可重复性

4.数据在存入Set集合的时候,是先判断HashCode()还是先判断equals(),为什么?
要先判断HashSet(),比较哈希值是否相同,如果相同而内容不同就存放在链表下面,当链表存到8个以上就会该存在红黑树。

5.Comparable和Comparator两个接口的区别,哪种接口使用的多,为什么?
Comparator接口使用多。因为comparable接口是对类所有的对象进行排序,而comparator接口只对单一对象排序,对于同一个类中的对象,可以使用不同中的排序规则。
回复 使用道具 举报
1.List接口下都有哪些集合,他们各自有什么特点
ArrayList:底层是数组,元素增删慢,查询快;
LinkedList:底层的结构是链表结构,元素查询慢,增删快
2.Set接口下的集合是如何保证无序不可重复的
无序:存储时通过不同的哈希值进行对应的保存,在取出时是按照特定的规则取出
不重复:
(1)首先,equals()方法可以对对象内容进行比较,但是效率低下;
(2)可以通过HashCode方法和哈希值对equals()方法进行优化;
(3)在调用equals()方法前,先判断哈希值,通过重写HashCode方法获得根据对象内容生成的一串哈希值;
(4)如果哈希值不相等,那么这两个对象的内容肯定不同,直接添加到集合中;
        如果哈希值相等,那么这两个对象的内容有可能不同,调用equals()方法对这两个对象的内容进行比较,如比较 结果不同,将此内容添加到同一个哈希值下的槽中
3.我们为什么要重写HashCode( )和equals()方法?
因为默认的HashCode()方法和equals()方法是比较地址值,无法根据元素的内容进行深一步的比较,无法保证存储元素的不可重复性,所以需要重写
4.数据在存入Set集合的时候,是先判断HashCode()还是先判断equals(),为什么?
先判断HashCode再判断equals,因为equals方法是可以对对象内容进行判断的,但是效率低下.
为了对equals方法进行优化,引入了HashCode方法和哈希值
5.Comparable和Comparator两个接口的区别,哪种接口使用的多,为什么?
Comparable是定义在类里,是对类的每个对象的自然排序;
Comparator是定义在方法里的某个对象按照自己的规则排序,
Comparator的使用较多。
因为Comparable是定义在类里,是对类的每个对象都要进行排序,耦合性太高,浪费内存。
因此要进行Comparator的解耦,且Comparator可以一定程度上进行自定义排序,灵活性较高




回复 使用道具 举报
1.List接口下都有哪些集合,他们各自有什么特点
答:1.ArrayList,特点:有序,有索引,可重复,底层是用数组实现的,所以具有索引,并且由于底层是数组结构,           有索引所以具有查询快的特点,遍历集合的话可以用迭代器,也可以用普通for循环
      2.LinkedList集合,特点:查询慢,增删快,可重复,有索引,底层使用的链表形式,前一个数据记住后一个数据的地址值,第二个数据记住第三个数据的地址          值,以此形成一个链条的形式,若需要增删元素的话只需要断掉之前的地址值,把前一个元素的地址值赋值给新加的地址值新加的元素地址值记住后面数据的            地址 值就好了,若查询的话因为没有索引,需要重头开始挨个比较所以慢。
, 3.Vector集合:比较古老的集合,在jdk1.0就有了,目前已经被ArrayList取代,基本不用了2.Set接口下的集合是如何保证无序不可重复的
       答:1.因为Set接口下的集合添加元素的时候都会给元素生成一个哈希值,添加的时候底层代码会自动比较哈希值是否一致,若哈希值一致还会调用equlas方                     法,比较内容,若内容也一致则会返回false元素将添加不进去,反之则可以添加进去,若存储自定义应用类型,需要重写hashCode和equals方法。

3.我们为什么要重写HashCode( )和equals()方法?
     答:1.重写HashCode( )和equals()方法主要是作用是为了去重。
4.数据在存入Set集合的时候,是先判断HashCode()还是先判断equals(),为什么?
答:1.数据存放进Set集合的时候先会生成一个哈希值,会先调用哈希值来比较集合中是否有相似的哈希值,若有相似的才会调用equals比较内容,因为有存在哈希值一样但是内容不一样的情况, 先执行HashCode( )比较哈希值的原因是,如果哈希值都不一样了那数据肯定不一样,直接可以添加进集合,所以不用再次调用equals比较了,节省性能, 貌似百度云的秒传功能就是用的类似的方法,我个人理解在百度云数据库里面我们每次上传的一些资源都会由百度的高深算法自动生成一段类似/或者干脆就是哈希值或者MD5值的一段数字,然后后期又有人上传的时候,在上传那一刻百度就会拿到这个文件的名称和这个文件的体积还有文件的一些其他信息根据相同的算法,生成一段哈希值最后(先)把这段哈希值传回了百度云的数据库,依托百度的强大算法(先)用这个值去比较当前数据库中是否存在相同的值,若存在相同的值则立即把找到的数据库A用户的数据地址值复制一份给B用户存到B的用户的账户中随后返回一个字符串提示B用户(文件秒传成功)其实文件本身根本就没有传输只是传输了一个值上去,以此来达到秒传,若由此推断百度云的数据库里面没有重复数据,用户都是保存的文件的地址值,上传相同的文件会直接复制地址值就好了。(自己试验过更改了文件的MD5值和哈希值后上传就不会秒传,不更改第二次上传则秒传)。
5.Comparable和Comparator两个接口的区别,哪种接口使用的多,为什么?
Comparable 是在集合内部定义的方法实现的排序,Comparator 是在集合外部实现的排序,一般我们使用Comparator较多,因为实现Comparable接口的方式比实现Comparator接口的耦合性 要强一些


回复 使用道具 举报
1.List接口下都有哪些集合,他们各自有什么特点
答:Arraylist:具有list的借口的特点,查询快,增删慢  底层是数组。
linkedlist:具有list的借口的特点,查询慢,增删快  底层是链表。
vectorlist:单线程,速度慢

2.Set接口下的集合是如何保证无序不可重复的
答:因为重写了底层的哈希表和equals,哈希值不同,就存入,不同就是找equals里会不会相等。
3.我们为什么要重写HashCode( )和equals()方法?
答:因为不重写HashCode和equals,在obj中就只有默认的地址值,而地址值对于我们来说是毫无意义,所以才需要重写来比较他们的属性
4.数据在存入Set集合的时候,是先判断HashCode()还是先判断equals(),为什么?
答:先判断HashCode,因为在hash底层就是哈希值,先同比较哈希值来看两个元素是否相同,不相同存入,相同则最后去比较Equals里面的两个元素属性是否相同
5.Comparable和Comparator两个接口的区别,哪种接口使用的多,为什么?
答:Comparator使用的比较多。因为使用comparable容易造成耦合性过高,或排序方式可能出现需要改变的情况。
回复 使用道具 举报
林少伟
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 加入黑马