Примечание: следует соблюдать осторожность, если
BigDecimal
объекты используются как ключи вSortedMap
или в элементах вSortedSet
, так какBigDecimal
естественное упорядочение несовместимо с равными.
Например, если вы создадите HashSet
и добавьте new BigDecimal("1.0")
и new BigDecimal("1.00")
к нему, набор будет содержать два элемента (поскольку значения имеют разные шкалы, поэтому они не равны в соответствии с equals
и hashCode
), но если вы сделаете то же самое с TreeSet
, набор будет содержать только один элемент, потому что значения сравниваются как равные при использовании compareTo
.
Есть ли какая-то конкретная причина этой несогласованности?