加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 允许分别提供equals-comparator和散列函数的Map

发布时间:2020-12-14 06:05:06 所属栏目:Java 来源:网络整理
导读:在尝试对多项式进行建模时,特别是它们的乘法,我遇到了以下问题.在乘法期间,两个多项式的单个单项式相乘,当然可以发生我有(3x ^ 2 y 5x y ^ 2)*(x y).结果包含3x ^ 2 y ^ 2和5 x ^ 2 y ^ 2,我想通过添加立即组合. 当然,我想使用单项式的部分x ^ 2 y ^ 2作为(
在尝试对多项式进行建模时,特别是它们的乘法,我遇到了以下问题.在乘法期间,两个多项式的单个单项式相乘,当然可以发生我有(3x ^ 2 y 5x y ^ 2)*(x y).结果包含3x ^ 2 y ^ 2和5 x ^ 2 y ^ 2,我想通过添加立即组合.

当然,我想使用单项式的部分x ^ 2 y ^ 2作为(哈希)映射中的关键字来添加不同的系数(在示例中为3和5).但是我设想的单项式对象自然也应该包含系数,该系数不应该是地图键的一部分.

当然,我可以写单项对象的equals / hashcode,使它们忽略系数.但这感觉错了,因为数学上单项式显然只等于另一个,如果系数相等的话.

为中间操作引入无系数单项式对象也看起来不正确.

我没有使用地图,而是使用列表并使用二进制搜索和一个忽略系数的专用比较器.

如果没有使用不使用密钥’equals / hashcode的地图,而是使用专用的地图,那么有没有更好的想法如何融合单项式?

解决方法

考虑使用TreeMap,它是一个SortedMap,因此也是一个Map.您可以为其构造函数提供Comparator.有序映射将使用该Comparator对映射键进行排序.但重要的是,对于你的情况,如果比较器返回0,它将使消耗器键相等.在你的情况下,需要一个不等于equals的比较器,如果你不小心可能会导致问题.

另一种选择是引入另一个类,它充当Mononomial的适配器,并且可以用作具有您应得的属性的映射键.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读