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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 厦门校区   /  2019-4-24 16:50  /  3472 人查看  /  58 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

.Set接口下的集合是如何保证无序不可重复的
HashSet集合的特点
- 底层数据结构是哈希表
- 对集合的迭代顺序不作任何保证,也就是说不保证存储和取出的元素顺序一致
- 没有带索引的方法,所以不能使用普通for循环遍历
- 由于是Set集合,所以是不包含重复元素的集合

2.我们为什么要重写HashCode( )和equals()方法?
答:因为我们要比较的是具体的内容,而不是地址值。
3.数据在存入Set集合的时候,是先判断HashCode()还是先判断equals(),为什么?
答:先判断HashCode()

        1.根据对象的哈希值计算存储位置

            如果当前位置没有元素则直接存入

            如果当前位置有元素存在,则进入第二步

    2.当前元素的元素和已经存在的元素比较哈希值

            如果哈希值不同,则将当前元素进行存储

            如果哈希值相同,则进入第三步

    3.通过equals()方法比较两个元素的内容

            如果内容不相同,则将当前元素进行存储

            如果内容相同,则不存储当前元素

4.Comparable和Comparator两个接口的区别,哪种接口使用的多,为什么?
区别:
无参构造使用:Comparable
有参构造使用:Comparator
Comparator使用的多,因为Comparable和类的耦合性太高,不便于后期代码维护。
Comparator自定义类和排序规则分开,更有利于后期的排序规则维护。
5.什么是泛型?使用泛型有什么好处?
答:它的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。
将类型由原来的具体的类型参数化,然后在使用/调用时传入具体的类型。
好处:        - 把运行时期的问题提前到了编译期间
                - 避免了强制类型转换
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马