【Java面试题】39 Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
2024-10-18 18:26:55
1、什么是Set?(what)
Set是Collection容器的一个子接口,它不允许出现重复元素,当然也只允许有一个null对象。
2、如何来区分重复与否呢?(how)
“ 用 iterator() 方法来区分重复与否 ”,这是在网上流传的答案,个人认为这是个错误的答案。API中写的很明白:“set 不包含满足
e1.equals(e2)
的元素对 e1
和 e2
”,由此可见回答使用equals()区分更合适。
3、为什么用equals()而不用==来区分?(why)
应该从它俩的区别谈起,==是用来判断两者是否是同一对象(同一事物),而equals是用来判断是否引用同一个对象。再看一下Set里面存的是
对象,还是对象的引用。根据Java的存储机制可知,set里面存放的是对象的引用,所以当两个元素只要满足了equals()时就已经指向同一个对象,
也就出现了重复元素。所以应该用equals()来判断。
最新文章
- 有1,2,3一直到n的无序数组,排序
- svn add 添加到版本库
- backbone调试
- 【海岛帝国系列赛】No.2 海岛帝国:“落汤鸡”市的黑帮危机
- JQuery &; Javascript
- 在android客户端加载html源代码总结
- Git 1.9.5.msysgit.1
- C++ 头文件系列(queue)
- AntiXSS的使用
- php 命令空间总结
- Javascript 对象 - 数组对象
- 项目初始化mysql建库和授权
- NET缓存框架CacheManager在混合式开发框架中的应用(1)-CacheManager的介绍和使用
- ssl证书
- 王之泰201771010131《面向对象程序设计(java)》第二周学习总结
- Altera 在线资源使用
- 2019年京东Java研发岗社招面经(面试经历+真题总结+经验分享)!
- Golang vs PHP 之文件服务器
- [Node.js] 06 - Multi-thread and process module
- flask框架~简易编写
热门文章
- Spring中的内部Bean
- Redis(二):Redis的九大应用场景
- Netty(六):Netty中的连接管理(心跳机制和定时断线重连)
- 2015小米暑期实习笔试题_风口的猪-中国牛市(dp)
- Photoshop制作Android UI: 怎样将图片背景变为透明
- Effective JavaScript Item 46 优先使用数组而不是Object类型来表示有顺序的集合
- C#中的 .NET 弱事件模式
- angular学习笔记(二十二)-$http.post
- cocos2d-x分别在Visual Studio和eclipse中设置启用Box2D
- 每日英语:Stressed at Work? Reflect on the Positive