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

前端之家收集整理的这篇文章主要介绍了java – 允许分别提供equals-comparator和散列函数的Map前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在尝试对多项式进行建模时,特别是它们的乘法,我遇到了以下问题.在乘法期间,两个多项式的单个单项式相乘,当然可以发生我有(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的适配器,并且可以用作具有您应得的属性的映射键.

原文链接:https://www.f2er.com/java/240026.html

猜你在找的Java相关文章