标签:comparable java hash comparison
我有一对哈希值,如
- 128ecf542a35ac5270a87dc740918404;d603ac0c04b9d08974482ae7fd4cf55
- a1288b1c7e2257a90bad9bdfb7690fbb;f23828e312d90cb7fdadd6479236119c
- …………………………..;…………………………..
我想让每一对与其他对比,意思是:
128ecf542a35ac5270a87dc740918404;d603ac0c04b9d08974482ae7fd4cf55d
保持原样;
如果是
d603ac0c04b9d08974482ae7fd4cf55d;128ecf542a35ac5270a87dc74091840
4,它应该成为
128ecf542a35ac5270a87dc740918404;d603ac0c04b9d08974482ae7fd4cf55d
我的主要目标是有一个特定的函数,它比较一对的两个哈希值,并根据一些规则返回一个具有在其中排序的值的对.规则本身并不重要,唯一的要求是,它应该非常快,并且应该总是给出相同的结果,因为输入是(unique1,unique2)或(unique2,unique1)
谢谢!
一种显而易见但效率低下的方法是仅将每个散列值中包含的数字相加并比较它们,并将散列值与较小的和作为对中的第一个元素,将较大的和作为第二个位置.
解决方法:
只需将两个字符串与通常的字符串比较(compareTo)进行比较,然后将较小的字符串放在第一位.这将保证您想要的.我希望这是非常便宜的,因为实际上哈希值在前几个字符中已经有所不同,然后比较不需要查看其余的字符串.此外,访问和比较非常少的字节数(如在您的示例中)是如此便宜,无论如何,只有当您比程序执行的其他操作更频繁地执行此操作时,您才能看到性能影响.
如果你没有将值作为字符串,而是作为字节数组或类似的东西,只需要自己实现一个简单的字典比较.
标签:comparable,java,hash,comparison 来源: https://codeday.me/bug/20190826/1728519.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。