当前位置: 首页 > 面试题库 >

Java HashSet是否具有自定义相等性条件?

狄宪
2023-03-14
问题内容

我一直在寻找类似于Java TreeSet在实例化时接收自定义比较器的功能,因此我不需要使用对象的默认相等性(和哈希码)条件。

我能想到的最接近的方法是将我的对象包装在一个私有的自定义类中,但这似乎很麻烦:(最终在编程时成为一种重复出现的主题,所以我想知道是否已经有一些东西可供我们使用。也许在公共图书馆?

谢谢


问题答案:

不,您已经找到了应该使用的解决方案。

即使是TreeSet,它是令人难以接受的使用不兼容与比较标准equals

请注意,如果排序集要正确实现Set接口,则排序集(无论是否提供显式比较器)所维护的顺序必须与equals一致。

(我不了解Apache Commons,但是Guava 特别 拒绝了此类请求。)



 类似资料:
  • 问题内容: 最近,我阅读了越来越多的关于人们在其HTML标记中使用自定义属性的信息,主要目的是为了嵌入一些额外的数据以供javascript代码使用。 我希望就使用自定义属性是否是一种好习惯以及一些替代方法收集一些反馈。 现在看来似乎真的可以简化 既 服务器端和客户端的代码,但它也不是W3C标准。 我们是否应该在Web应用程序中使用自定义HTML属性?为什么或者为什么不? 对于那些认为自定义属性是

  • 问题内容: 最近,我阅读了越来越多的关于人们在其HTML标记中使用自定义属性的信息,主要目的是为了嵌入一些额外的数据以供javascript代码使用。 我希望就使用自定义属性是否是一种好习惯以及一些替代方法收集一些反馈。 现在看来似乎真的可以简化 既 服务器端和客户端的代码,但它也不是W3C标准。 我们是否应该在Web应用程序中使用自定义HTML属性?为什么或者为什么不? 对于那些认为自定义属性是

  • 问题内容: 阅读了有关在地图中使用切片的相关问题之后,我对Go中的相等性感到好奇。 我知道有可能重写Java方法。有没有类似的方法来定义Go如何检查用户定义的类型/结构是否相等?如果是这样,将有一个针对上述问题的解决方法。我以为使用值可能会提供解决方案,但我收到了错误消息。 问题答案: Go支持相等性检查结构。 它不能与指针字段一起使用(按照您想要的方式),因为指针地址不同。 您无法修改相等运算符

  • 问题内容: 新的ES 6(和谐)引入了新的Set对象。Set使用的身份算法类似于运算符,因此不太适合比较对象: 如何自定义Set对象的相等性以进行深层对象比较?有没有像Java一样的东西? 问题答案: ES6 对象没有任何比较方法或自定义比较可扩展性。 的,而方法只关闭它是一个基本相同的实际物体或相同的值,没有办法插头插入或更换只是逻辑。 你大概可以从派生您自己的对象和替换,并与一些做了深刻的对象

  • 有没有办法调试由自定义XMLURLSolver从数据库加载的XSLT文档,或者有人知道下面的错误消息是关于什么的? 我有一个导入通用xslt文档的XSLT样式表: 该方案由一个自定义的处理,它从数据库加载XSLT文档,但我得到一个错误: 具有相同密钥的条目已存在。 xsl:import引用的公共XSLT文档包含一些公共XSLT模板,每个模板都有一个唯一的名称。 将XSLT文档从本地文件系统移动到数

  • 如何编写Java代码来确定给定的自动机是否具有确定性。我有一个代表自动机的类,它有以下五个变量: Δ表示如下所示,例如,在实际自动机中,程序中的q1,1,q2看起来像。我知道在一个非确定性自动机中,可能有多个可能的状态,但我不知道如何计算。