Какую функцию можно использовать для сортировки вектора? - PullRequest
20 голосов
/ 15 января 2010

Я не могу найти какую-либо функцию сортировки в Java API для векторов. Collections.sort только для List<T> и не для Vector<T>.

Я не хочу писать свою собственную функцию сортировки, потому что я думаю, что java должен реализовать это.

Я ищу что-то вроде:

class ClassName implements Comparator<ClassName> ..
ClassName cn = ..;
sort(cn);

Ответы [ 7 ]

28 голосов
/ 15 января 2010

В соответствии с API документами , Vector просто реализует List, поэтому я не вижу проблем. Возможно, ваша путаница была вызвана тем, что вы объявили Vector в соответствии со старым стилем Java 1.0:

Vector vector = new Vector();

вместо объявления его в интерфейсе (что считается хорошей практикой):

List list = new Vector();

Таким образом, вы можете просто использовать Collections#sort() для сортировки коллекции, Comparable для определения порядка упорядочивания по умолчанию и / или Comparator определить внешнее управляемое поведение при упорядочении.

Вот учебник Sun о порядке размещения объектов.

Вот еще один SO ответ с полными примерами кода.

Тем не менее, почему вы все еще придерживаетесь legacy Vector класса? Если вы можете, просто замените на улучшенный ArrayList, который был разработан как замена Vector более десяти лет назад.

15 голосов
/ 15 января 2010

Vector реализует List, поэтому Collections.sort будет работать.

5 голосов
/ 15 января 2010

В соответствии со спецификацией API Java для класса Vector он реализует интерфейс List, необходимый для использования Collections.sort метод.

Также, как примечание, для большинства применений класс Vector можно заменить с помощью одной из List реализаций в Java Collections Framework, например ArrayList. Класс Vector синхронизирован, поэтому, если нет реальной необходимости синхронизированного доступа, следует использовать одну из других реализаций List.

2 голосов
/ 15 января 2010

Вектор - это список

1 голос
/ 02 июля 2017

Не забудьте добавить implements Comparable<> в своем классе:

public class XXXX 
    implements Comparable<XXXX> {

}

И переопределить compareTo() в вашем классе типа объекта, хранящегося в вашем векторе.

Я тоже столкнулся с этой проблемой, Eclipse IDE говорил мне, что Collection.sort() только для List<T> Не мог заставить это работать, пока я не сделал то, что я только что сказал.

1 голос
/ 20 марта 2013

Collections.sort (nameOfTheVectorToBeSorted); попробуйте это на вашем векторе, который будет отсортирован.

0 голосов
/ 25 мая 2017

Collections.sort(vector_name)

Он отсортирует вектор на месте, поэтому вам не нужно присваивать результат вышеуказанной команды обратно вектору.

Это работает, потому что Векторы являются реализациями списков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...