TreeSet排序错误

时间:2012-04-13 11:48:45

标签: java treeset

我有一个名为numb的数组。它包含5个数字(来自用户的输入)输入值的示例是:5,29,101,100,89.4。我使用for循环将此数组的元素转移到名为TreeSet的{​​{1}}中(我按降序排列元素)。在此之后,我使用ts显示此TreeSet的元素。但显示屏显示的内容与我的预期不同。它显示MessageDialog

当我输入具有相同位置值的数字时 - 例如数十,数百(如果数组只包含12,56,84,74,65之类的数字),它按预期排序。我不知道我做错了什么。

以下是代码:

[89.4,5,29,101,100]

2 个答案:

答案 0 :(得分:2)

您将数字转换为字符串,因此不会得到数字的自然顺序,但是“10”小于“2”的字符串的自然顺序,因为第一个字符较小。

将树集的内容更改为Number或特定的数字类型,如Double,并将数组元素解析为数字, 例如
使用Double.parseDouble()new DecimalFormat().parse()等。

答案 1 :(得分:0)

比较字符串时,它来自第一个字符。这意味着您需要考虑这样的“数字”。你可以按相反的顺序

-9.9
-1e1
-100
89.4
899.5
5
29
101
100
05
005.0
0059

首先比较第一个字母或数字8> 5> 2> 1.如果是领带,则比较第二个字母,依此类推。注意: '。' > '9'和' - '> '9'

将这些作为数字进行比较的方法是首先将它们转换为数字。