码迷,mamicode.com
首页 > 其他好文 > 详细

关于HashSet.contains的实现

时间:2021-07-01 17:25:01      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:说明   equal   ret   inter   int   label   比较   code   关于   

程序的一部分如下:
System.out.println(labelInADT); System.out.println(intervalSet.labels()); System.out.println(intervalSet.labels().contains(labelInADT));

其中labels返回一个HashSet。

我们惊讶地发现输出如下:

lalala0

[lalala0, lololo0]

false

这说明intervalSet.labels().contains()不认为labelInADT是其中的成员。但是在程序中,我们已经重载过equals()方法。于是遇到了问题。

解决办法:注意到HashSet也会利用hashCode方法比较成员,所以需要重写hashCode方法。

	@Override
	public int hashCode() {
		return Objects.hash(label,id);
	}

  添加之后问题迎刃而解。

 

 

关于HashSet.contains的实现

标签:说明   equal   ret   inter   int   label   比较   code   关于   

原文地址:https://www.cnblogs.com/BAKA-HIT/p/14958373.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!