我应该在TreeMap中使用Double作为键吗?

Mal*_*ean 9 java sorting collections treemap

正如在HashMap中Double的回答中所描述的,双打不应该在HashMaps中使用,因为它们很难比较相等.我相信我的情况有所不同,但我想我要确认,因为我没有看到任何关于此的事情.

我将要有一系列与对象关联的double值,我希望它们按double值排序.TreeMap是一个合适的解决方案吗?会有更好的吗?double值是一堆数学生成的,因此重复值的可能性非常低.

编辑:我应该澄清:我需要的是让这个对象列表按照与它们相关联的双精度排序.双打的价值将被丢弃,我永远不会打电话map.get(key)

aio*_*obe 14

不应在HashMaps中使用双打,因为它们难以比较相等.

  • 你会尝试get基于某些键的值吗?

    • 如果,则对推理"很难比较"适用,你应该避免这样的数据结构(或总是依靠tailMap/ headMap/ submap并获取地图的范围).

    • 如果没有(即你通常只是做for (Double key : map.keySet()) ...或迭代entrySet),那么我会说你很好Double用作键.

double值是一堆数学生成的,因此重复值的可能性非常低.

  • 它是一个错误,如果你真正得到重复?

    • 如果是,那么它不是正确的数据结构.例如,您可以使用MultimapGuava代替.

    • 如果不是,(即它映射到的两个值中的哪一个无关紧要,因为它们只能通过一个小的epsilon来区分)那么你应该没问题.