Как отсортировать вектор строки в java-me?

63
7

У меня есть вектор Integer (первичный ключ таблицы базы данных); и я реализовал метод, который возвращает String на основе этого первичного ключа Integer. Моя проблема в том, что я хочу поместить эти строки в вектор, и они "отсортированы" в векторе. Как достичь этой сортировки строк?

спросил(а) 2021-01-25T14:26:51+03:00 4 месяца, 4 недели назад
1
Решение
117

Используйте следующий код для сортировки вектора в java-me.

public Vector sort(Vector sort) {
Vector v = new Vector();
for(int count = 0; count < e.length; count++) {
String s = sort.elementAt(count).toString();
int i = 0;
for (i = 0; i < v.size(); i++) {
int c = s.compareTo((String) v.elementAt(i));
if (c < 0) {
v.insertElementAt(s, i);
break;
} else if (c == 0) {
break;
}
}
if (i >= v.size()) {
v.addElement(s);
}
}
return v;
}

ответил(а) 2021-01-25T14:26:51+03:00 4 месяца, 4 недели назад
89

Вы можете использовать TreeSet, который будет хранить строки в отсортированном порядке или использовать что-то вроде этого, прежде чем вы их TreeSet:

Collections.sort(yourVector);

Другой альтернативой является запрос базы данных на первичный ключ ORDER BY. Пусть база данных выполнит эту работу.


Вероятно, ваш запрос возвращает больше первичных ключей. Я задаюсь вопросом, почему вы имеете дело с вещами на примитивном уровне String и первичного ключа. Готов поспорить, вы недостаточно думаете об объектах. Там, где есть первичный ключ, другие данные должны следовать за ним. Я собирал их все вместе и беспокоился о сортировке этих объектов.

Почему Vector? Я бы предпочел ArrayList, потому что он не синхронизирован по умолчанию. Лучшая производительность.

ответил(а) 2021-01-25T14:26:51+03:00 4 месяца, 4 недели назад
76

Вам необходимо будет реализовать свой собственный компаратор, реализовав интерфейс Comparator.

Что-то вроде этого должно сделать трюк:

Collections.sort(vect, new Comparator() {
public int compare(Object a, Object b) {
return ( new Integer(((MyClass) a).getNumber()) ).compareTo( new Integer(((MyClass) b).getNumber()));
}
});

Взято отсюда.

ответил(а) 2021-01-25T14:26:51+03:00 4 месяца, 4 недели назад
63

Передайте вектор статическому методу Collections.sort(vector) не уверен, как вы хотите его отсортировать, но этот метод будет сортироваться в соответствии с естественным порядком объектов, содержащихся в векторе, заданных методом compareTo для каждого объекта.

API коллекций может помочь вам в дальнейшем.

ответил(а) 2021-01-25T14:26:51+03:00 4 месяца, 4 недели назад
64

Вектор медленнее, чем ArrayList, как его поточно-безопасная коллекция.

Однако операция сортировки не является потокобезопасной. Таким образом, чтобы отсортировать вектор в потоковом безопасном режиме, вам необходимо его синхронизировать.

synchronized(vector) {
Collections.sort(vector);
}

Если вам не нужна сборка для обеспечения безопасности потоков, рассмотрите возможность использования ArrayList.

ответил(а) 2021-01-25T14:26:51+03:00 4 месяца, 4 недели назад
63

Если это Java, вы ищете

Collections.sort(vector);

?

ответил(а) 2021-01-25T14:26:51+03:00 4 месяца, 4 недели назад
46

Вы можете использовать класс Collections, который будет содержать строки в отсортированном порядке или использовать что-то вроде этого, прежде чем вы их вернете:

если вы хотите отсортировать его в порядке возрастания только для использования

Collections.sort (поместите свой.... LIST/ARRAYLIST/VECTOR OBJECT ЗДЕСЬ);

если хотите отсортировать сортировку по убыванию

** Collections.sort (поместите свой.... LIST/ARRAYLIST/VECTOR OBJECT ЗДЕСЬ); ** ** Collections.reverse (поместите свой.... LIST/ARRAYLIST/VECTOR OBJECT ЗДЕСЬ); **

ответил(а) 2021-01-25T14:26:51+03:00 4 месяца, 4 недели назад
45

import java.util.Vector;
import java.util.Collections;

public class SortJavaVectorExample {

public static void main(String[] args) {

//create Vector object
Vector v = new Vector();

//Add elements to Vector
v.add("1");
v.add("3");
v.add("5");
v.add("2");
v.add("4");

/*
To sort a Vector object, use Collection.sort method. This is a
static method. It sorts an Vector object elements into ascending order.
*/
Collections.sort(v);

//display elements of Vector
System.out.println("Vector elements after sorting in ascending order : ");
for(int i=0; i<v.size(); i++)
System.out.println(v.get(i));

}
}

ответил(а) 2021-01-25T14:26:51+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема