Какую функцию можно использовать для сортировки вектора?
Я не могу найти любую функцию сортировки в java API для векторов.
Collections.sort
предназначен только для List<T>
, а не для Vector<T>
.
Я не хочу писать свою собственную функцию сортировки, потому что я думаю, что Java должен реализовать это.
Я ищу что-то вроде:
class ClassName implements Comparator<ClassName> ..
ClassName cn = ..;
sort(cn);
Ответы
Ответ 1
В соответствии с API docs Vector
просто реализует List
, поэтому я не вижу проблем. Возможно, ваше замешательство было вызвано тем, что вы объявили Vector
в соответствии со старым стилем Java 1.0:
Vector vector = new Vector();
вместо объявления его интерфейсом (который считается хорошей практикой):
List list = new Vector();
Таким образом, вы можете просто использовать Collections#sort()
для сортировки коллекции, Comparable
, чтобы определить поведение порядка по умолчанию и/или Comparator
, чтобы определить внешнее управляемое поведение упорядочения.
Здесь учебник Sun о заказе объектов.
Вот еще один SO ответ с полными примерами кода.
Тем не менее, почему вы все еще придерживаетесь старого класса Vector
? Если вы можете, просто замените на улучшенный ArrayList
, который был разработан как замена Vector
более десяти лет назад.
Ответ 2
Vector реализует List, так что Collections.sort будет работать.
Ответ 3
В соответствии с Спецификацией API Java для класса Vector
он реализует List
, который необходим для использования метода Collections.sort
.
Кроме того, в качестве примечания для большинства применений класс Vector
может быть заменен с помощью одной из реализаций List
в структуре коллекций Java, например ArrayList
. Класс Vector
синхронизируется, поэтому, если нет реальной потребности в синхронизированном доступе, следует использовать одну из других реализаций List
.
Ответ 4
Вектор - это список
Ответ 5
Collections.sort(nameOfTheVectorToBeSorted); попробуйте это на своем векторе, который будет отсортирован.
Ответ 6
Не забудьте добавить implements Comparable<>
в свой класс:
public class XXXX
implements Comparable<XXXX> {
}
И переопределить compareTo()
в вашем классе типа объекта, хранящегося в вашем векторе.
У меня тоже возникла эта проблема, Eclipse IDE рассказывала мне, что Collection.sort()
только для List<T>
. Не удалось заставить его работать, пока я не сделал то, что только что сказал.
Ответ 7
Collections.sort(vector_name)
Он сортирует вектор на месте, поэтому вам не нужно назначать результат указанной выше команды вектору.
Это работает, потому что векторы являются реализациями списков.