Я пытаюсь отсортировать хэш-карту и вернуть список ключей результата. Вот что я пробовал:
public List<City> getCities() {
Map<Node<City>, Edge> map = new HashMap<>();
// add entries to map ...
return map.entrySet().stream()
.sorted(Map.Entry.<Node<City>, Edge>comparingByValue())
.map(e -> e.getKey().getValue())
.collect(Collectors.toList());
}
Края реализуют compairable, и метод getValue () вернет объект City.
public class Edge<T> implements Comparable<Edge<T>> {
private Node<T> a;
private Node<T> b;
private double weight;
public Edge(Node<T> a, Node<T> b) {
this.a = a;
this.b = b;
}
public void setWeight(double weight) {
this.weight = weight;
}
public double getWeight() {
return sum;
}
@Override
public int compareTo(Edge<T> o) {
return Double.compare(getWeight(), o.getWeight());
}
}
Теперь моя IDE ни на что не жалуется, но когда я компилирую, я получаю эту ошибку:
Ошибка: (104, 28) Java: не удается найти символ
символ: метод getKey ()
location: переменная e типа java.lang.Object
Я знаю, что нехорошо просто опубликовать некоторый код и сообщение об ошибке. Но на самом деле я искал час и ничего не нашел. Также для меня код имеет смысл, и я понятия не имею, почему getKey записи не распознается.
Так что же происходит? почему я получаю эту ошибку?