为什么用Set set=new HashSet

为什么用Set set=new HashSet

为什么用Set set=new HashSet,而不直接HashSet set=new HashSet

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

Set 是接口

Java 提供了很多 Set的实现类 : 

http://img1.sycdn.imooc.com/climg//594afc720001c15010080597.jpg

每个 Set的实现类内部实现原理都不一样:

HashSet : 为快速查找设计的Set。存入HashSet的对象必须定义hashCode()。
TreeSet : 保存次序的Set, 底层为树结构。使用它可以从Set中提取有序的序列。
LinkedHashSet : 具有HashSet的查询速度,且内部使用链表维护元素的顺序(插入的次序)。于是在使用迭代器遍历Set时,结果会按元素插入的次序显示。

Set接口引用这些实现类的实例 , 利用多态的特性,可以容易的修改引用的实现类 , 

比如把 HashSet 改成 TreeSet , Set 的引用代码不用任何修改

如果不是使用 Set接口的引用  有一万处使用了 Hashset 的引用 

HashSet set=new HashSet

你得修改一万次 改成 TreeSet 

保证了程序的兼容性和扩展性


  • 透明度88 提问者 #1
    非常感谢!
    2017-06-22 08:39:14
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师