У меня есть TreeMap
:Java TreeMap неисправно
final Map<UserSetting, ItemsIntersectionAndComplement> _usersSimilar = new TreeMap<UserSetting, ItemsIntersectionAndComplement>(new Comparator<UserSetting>() {
@Override
public int compare(UserSetting lhs, UserSetting rhs) {
int prec = (lhs.id()).compareTo(rhs.id());
return lhs.totalMatch > rhs.totalMatch ? -1 : (lhs.totalMatch < rhs.totalMatch) ? 1 : prec;
}
});
И при проверке ключа кастрированный баран существует, то он ответит неверно, но в определенном положении п-го я вижу, что пункт. Как это возможно? И в предыдущий элемент итерации был добавлен.
if (!_usersSimilar.containsKey(rating2.userSetting())) { // <-- CHECKING HERE EXISTENCE
ItemsIntersectionAndComplement iiac = new ItemsIntersectionAndComplement();
iiac.intersection.add(rating2.item());
rating2.userSetting().totalMatch = 1;
_usersSimilar.put(rating2.userSetting(), iiac);
} else {
//.. SOME CODE, BUT CALL DOES NOT REACH IT
}
public class UserSetting extends _UserSetting {
public UserSetting() {
}
int totalMatch;
}
Почему -1? разумный вопрос. –
Я поставил комментарий, где я проверяю существование –
Переменные ключи на карте - это не очень хорошая идея. [This] (http://stackoverflow.com/questions/7842049/are-mutable-hashmap-keys-a-dangerous-practice) относится к 'HashMap', но аналогичный аргумент может быть сделан и для TreeMap. В подобных случаях обычно получается, что «Карта» - это неправильная структура данных, и вам действительно нужен отсортированный «Список». – biziclop