В основном хотелось бы сохранить объект типа Stations (строковое повторение имени станции) в алфавитном порядке из массива. Но я не могу изменить класс станций, чтобы сделать его сопоставимым, как это было предопределено для меня. Существуют ли какие-либо другие методы сортировки списка массивов станций типа в алфавитном порядке, без реализации интерфейса компаратора или с помощью collections.sort()
Поскольку исходный вопрос был основан на недоразумении, вот решение, которое использует интерфейс Comparator
и Collections.sort
, но не изменяет оригинальный класс Station
. Во-первых, у нас есть класс Station
который мы не можем изменить.
public final class Station {
private final String name;
public String getName() { return name; }
}
В нашем собственном коде мы можем определить новый класс:
public class StationByNameComparator implements Comparator<Station> {
@Override
public int compare(Station left, Station right) {
String leftName = left.getName();
String rightName = right.getName();
return leftName.compareTo(rightName);
}
}
Класс Station
можно оставить как есть. Теперь мы можем использовать Collections.sort
для сортировки станций:
List<Station> stations = /* ... */;
Collections.sort(stations, new StationByNameComparator());
Station
. Comparator
обычно реализуется в совершенно другом классе, который в вашем случае должен называться StationByNameComparator
.
Как владелец места, пока ответ Артура не будет восстановлен:
Вы можете реализовать Comparator
вне класса:
Collections.sort(listOfStations, new Comparator<Stations>() {
public int compare(Stations s1, Stations s2){
// logic here
}
});
java.util.Comparator
?