Подтвердить что ты не робот

Какую функцию можно использовать для сортировки вектора?

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

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

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

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

Ответ 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)

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

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