У меня есть TreeMap, который сопоставляет строковые ключи для пользовательского класса City. Вот как это конкретизируется: реализацияJava TreeMap итератор не работает правильно для клавиш String
TreeMap<String, City> nameDictionary = new TreeMap<String, City>(new CityNameComparator());
CityNameComparator:
public class CityNameComparator implements Comparator<String>
{
public int compare (String c1, String c2) {
return c1.compareTo(c2);
}
}
У меня есть метод, который возвращает итератор, который должен перемещаться по карте в порядке ключ-ASCii:
public Iterator<City> getNameIterator(){
return nameDictionary.values().iterator();
}
По какой-то причине значения возвращаются в том порядке, в котором они были добавлены в TreeMap. Есть идеи?
Можете ли вы опубликовать рабочий код, который реплицирует проблему? Я не вижу никаких очевидных ошибок, хотя наличие пользовательского компаратора, который просто использует естественный порядок String, в любом случае является бессмысленным. –
Я не вижу причины, почему это не должно работать. Это всегда сработало для меня. –