Как отсортировать вектор строки в java-me? - PullRequest
2 голосов
/ 04 июля 2011

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

Ответы [ 8 ]

7 голосов
/ 04 июля 2011

Используйте следующий код для сортировки вектора в 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;
    }
3 голосов
/ 04 июля 2011

Вам потребуется реализовать собственный компаратор, реализовав интерфейс 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()));
  }
});

Взято из здесь .

3 голосов
/ 04 июля 2011

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

Collections.sort(yourVector);

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

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

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

2 голосов
/ 04 июля 2011

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

Collections.sort(vector);

2 голосов
/ 04 июля 2011

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

API Collections может помочь вам в дальнейшей работе.

1 голос
/ 04 июля 2011

Vector медленнее, чем ArrayList, поскольку это потокобезопасная коллекция.

Однако операция сортировки не является поточно-ориентированной. Поэтому для сортировки вектора потокобезопасным способом вам необходимо синхронизировать его.

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

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

0 голосов
/ 21 сентября 2015

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

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

Collections.sort (поместите свой .... СПИСОК / МОДУЛЬ / ВЕКТОР ОБЪЕКТА ЗДЕСЬ);

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

** Collections.sort (поместите свой .... СПИСОК / СЛОЙ / ВЕКТОР ОБЪЕКТА ЗДЕСЬ); ** ** Collections.reverse (поместите ваш .... СПИСОК / ARRAYLIST / VECTOR OBJECT ЗДЕСЬ); **

0 голосов
/ 04 июля 2011
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's 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));

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