Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
2016-07-16 07:58
656 查看
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?
是用==还是equals()? 它们有何区别?
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()来判断。
相关文章推荐
- 面试题4
- ArrayList 的实现原理
- July 15th比赛——积木游戏
- 自定义PHP系统异常处理类
- 关于上次抓猫题目100分解法(pascal)
- 从类的继承看socketserver源码
- 单元格删除方法和交换位置方法
- BZOJ 2115 [Wc2011] Xor
- PHP中exit()与die()的区别
- FMDB的简单应用
- Android中Recyclerview使用5----添加头部:RecyclerViewHeader
- PHP反射(ReflectionClass、ReflectionMethod)在ThinkPHP框架的控制器调度模块中的应用
- 透过统计力学,模拟软物质——EPJE专访2016年玻尔兹曼奖得主Daan Frenkel
- 根据输入的textField首字符排序
- PHP反射ReflectionClass、ReflectionMethod 入门教程
- Android中Recyclerview使用4----选中某一条目
- bzoj 1823 [JSOI2010]满汉全席
- 【教训】 form表单提交时,action url中参数无效
- runLoop机制
- uboot 命令分析(一) — bootm