Сортировать и оптимизировать Java Vector с помощью пользовательских объектов - PullRequest
1 голос
/ 03 сентября 2010

Я должен оптимизировать Java Vector с помощью «class Row_i» - объектов (см. Ниже), которые описывают две серии (A и B) диапазонов номеров (startPos - endPos), равных в каждой строке.Этот вектор должен быть отсортирован и оптимизирован.

Группа / Критерии сортировки:

1 - Группировка строк по id_A,
2 - Группировка строк по id_B,
3 - Группировка строк по startPosA,
4 - Строкагруппировка по startPosB,

Поэтому после сортировки необходимо удалить лишние строки.

Избыточные строки:
1. если значение startPosA (i + 1) является следующим числом, то startPosA (i)

Оптимизация строки должна происходить, только если PosB соответствует тем же критериям.

Вектор не отсортирован: ..................................

id_A id_B sPosA - ePosA sPosA - ePosA

2392 ++ 4061 ++ 3158 - 3163 ++ 13222- 13227;
1192 ++ 2064 ++ 287 - 290 ++ 257 - 260;
2392 ++ 1063 ++ 480 - 590 ++ 1950 - 1960;
1092 ++ 1555 ++ 7385 -7395 ++ 193 - 203;
1192 ++ 2064 ++ 273 - 286 ++ 243 - 256;
1192 ++ 2064 ++ 291 - 294 ++ 261 - 264;

Вектор отсортирован и оптимизирован

1092 ++ 1555 ++ 7385 - 7395 ++ 193 - 203;
1192 ++ 2064 ++ 273- 294 ++ 243 - 264;
2392 ++ 1063 ++ 480 - 590 ++ 1950 - 1960;
2392 ++ 4061 ++ 3158 - 3163 ++ 13222 - 13227
.........................

Зависит от размера коллекции реализации.И в одном случае 200 - 5000 объектов Кто-нибудь знает, как решить эту проблему, я эффективный способ.

Буду признателен за любую помощь.


Целые классы в Java здесь:
Объекты - класс "Row_i" -> http://pastebin.com/wc3ytUqf,

@ Отсутствует Фактор: Спасибо за подсказку !!

Ответы [ 2 ]

1 голос
/ 03 сентября 2010

Используйте SortedSet как переменную / field / return-type и TreeSet при создании экземпляров. Позвольте вашему классу Row_i реализовать Comparable или создайте класс, который реализует Comparator и пропускает компаратор при создании набора деревьев (компаратор должен быть одиночным).

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

Редактировать: Я написал пример для сопоставимых http://pastebin.com/5Z3GBNrV

0 голосов
/ 03 сентября 2010

Я не совсем понимаю все, что вы делаете, но наличие вектора не кажется правильным выбором коллекции, если вы хотите отсортировать и удалить дубликаты.А как насчет TreeSet?

Чтобы гарантировать отсутствие дублирования и порядка сортировки, вашему классу Row_i потребуется переопределить методы equals () и hashCode (), а также реализовать интерфейс Comparable, если вы не решите использовать Comparator.

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