Java订购地图或列表

时间:2014-01-02 17:30:17

标签: java list sorting map hashmap

如果您的地图或列表中有一堆介于-1和1之间的双精度数,则可以从-1到1对它们进行排序。 怎么样它是完美的(例如0.4在0.3之后但在0.5之前)

是否可以模拟将数字放在正确的位置但不完美? 很难解释我的意思,但我画了一个图表来帮助。

x是数字线上的点 The x's are points on the number line

我不希望它被完美地排序,也不是随机排序而是在中间;粗略排序。 这有可能吗?

3 个答案:

答案 0 :(得分:1)

您可以使用基于TreeMap的{​​{1}}(带有Comparator-arg的构造函数)或Collections.sort(List, Comparator) Comparator

这对于完美排序是正确的。关于“粗略排序”,您必须编写自己的比较器逻辑。请定义您的术语,如何排序。

答案 1 :(得分:1)

您尚未定义'粗略排序',但有一个选项是“分箱”。将间隔拆分为宽度为 spacingize / n n 区间。将bin存储在数组或列表中,每个bin都是值列表。在输入集上迭代一次,并将值分配到适当的bin,即 O(n)。您可以通过增加容器数量来改进排序。

答案 2 :(得分:0)

您可以先对它们进行排序,然后运行直接邻居的设置随机交换。例如,如果列表大小为n,则在随机位置交换n次。