3
我在某处读到我们无法将BigDecimal添加到TreeSet,因为它错误地实现了compareTo方法,例如,对于9.0和9.00,它将返回0,尽管使用equals方法它将返回false。这似乎是原因。有人可以更详细地解释一下吗?为什么我们不能将BigDecimal添加到TreeSet?
我在某处读到我们无法将BigDecimal添加到TreeSet,因为它错误地实现了compareTo方法,例如,对于9.0和9.00,它将返回0,尽管使用equals方法它将返回false。这似乎是原因。有人可以更详细地解释一下吗?为什么我们不能将BigDecimal添加到TreeSet?
我会冒昧地说BigDecimal有它的怪癖,你应该使用不同的类,如果不是'Double'那么你自己的, – vikingsteve
你可以使用'TreeSet',你只是注意到添加'1.0'和'1.00'只会将一个值添加到您的TreeSet中。根据您的使用情况,这可能或可能是可以接受的。 –
assylias
事实上,这不是重复的,因为在使用'TreeSet'的情况下有一个简单的解决方案,使用一个自定义比较器的构造函数:'TreeSet(比较器 super E>比较器)' – vikingsteve