Регистрация  |  Вход

Сортировка по дате листа объектов

День добрый.
Есть лист объектов.
Возможность сортировки в выборке отсутствует.
Надо как то отсортировать лист по дате.
Как это сделать?

День добрый.
Есть лист объектов.
Возможность сортировки в выборке отсутствует.
Надо как то отсортировать лист по дате.
Как это сделать?

Я так понимаю есть некое количество записей из базы в листе и надо узнать какая больше по дате.Если так тогда сортировка пузырьком в помощь то есть надо пройти все записи и что то вроде if (date1.getDate() < date2.getDate()).

Я так понимаю есть некое количество записей из базы в листе и надо узнать какая больше по дате.Если так тогда сортировка пузырьком в помощь то есть надо пройти все записи и что то вроде if (date1.getDate() < date2.getDate()).
[url]http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_comparable_example.htm[/url]

Если честно я не совсем понимаю как это делать.
У меня есть List<Event> который надо отсортировать по ActivityDate. В верх и вниз.

Если честно я не совсем понимаю как это делать.
У меня есть List<Event> который надо отсортировать по ActivityDate. В верх и вниз.

Вот тут немного подробнее описано про сортировку списка объектов.
Sorting Lists of sObjects.

В твоем случае подойдет кастомная сортировка с помощью враппера для объекта, который будет наследовать Comparable interface (вторая половина документа).
это то про что wilder, но не написал как использовать.

Есть ламерский способ, который тоже имеет право на жизнь (сам применял его когда-то):
из своего листа объектов делаешь такую мапу Map<Date, List<sObject>>
(Date в этом случае тип поля по которому ты хочешь отсортировать)
заполняешь эту мапу
из keySet() делаешь list -> это будут все твои значения полей, которые надо отсортировать.
делаешь этому листу sort() -> получаешь отсортированные значения
проходишься по листу и выдираешь из мапы объекты и складывешь в новый лист
profit! Вот тебе отсортиранные лист объектов по полю Date (или любому другому)

Жаль конечно что нельзя сделать запрос в базу
так бы сортировка получилась бы вообще в одну строчку:

List<sObject> newList = [SELECT Id FROM sObject WHERE Id in <!-- s:o --><img src="{SMILIES_PATH}/icon_e_surprised.gif" alt=":o" title="Удивлён" /><!-- s:o -->ldList ORDER BY Date__c];

Вот тут немного подробнее описано про сортировку списка объектов.
[url=http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_list_sorting_sobject.htm]Sorting Lists of sObjects[/url].

В твоем случае подойдет кастомная сортировка с помощью враппера для объекта, который будет наследовать Comparable interface (вторая половина документа).
это то про что wilder, но не написал как использовать.

Есть ламерский способ, который тоже имеет право на жизнь (сам применял его когда-то):
из своего листа объектов делаешь такую мапу Map<Date, List<sObject>>
(Date в этом случае тип поля по которому ты хочешь отсортировать)
заполняешь эту мапу
из keySet() делаешь list -> это будут все твои значения полей, которые надо отсортировать.
делаешь этому листу sort() -> получаешь отсортированные значения
проходишься по листу и выдираешь из мапы объекты и складывешь в новый лист
profit! Вот тебе отсортиранные лист объектов по полю Date (или любому другому)

:)

Жаль конечно что нельзя сделать запрос в базу
так бы сортировка получилась бы вообще в одну строчку:

List<sObject> newList = [SELECT Id FROM sObject WHERE Id in <!-- s:o --><img src="{SMILIES_PATH}/icon_e_surprised.gif" alt=":o" title="Удивлён" /><!-- s:o -->ldList ORDER BY Date__c];

Я понимаю что с точки зрения ООП лучше использовать преопределенные методы в interface. Но Пока меня никто не переубедил что кастомная сортировака пузырьком хуже чем хорошо реализованный интерфейс.Пример на собеседование писал две сортировки на листике в разных вариациях. Хотя по мне все зависит от проекта и его маштаба на котором работаешь. :)

Я понимаю что с точки зрения ООП лучше использовать преопределенные методы в interface. Но Пока меня никто не переубедил что кастомная сортировака пузырьком хуже чем хорошо реализованный интерфейс.Пример на собеседование писал две сортировки на листике в разных вариациях. Хотя по мне все зависит от проекта  и его маштаба на котором работаешь. :)

Dmitry Shnyrev
Есть ламерский способ, который тоже имеет право на жизнь (сам применял его когда-то):
из своего листа объектов делаешь такую мапу Map<Date, List<sObject>>
(Date в этом случае тип поля по которому ты хочешь отсортировать)
заполняешь эту мапу
из keySet() делаешь list -> это будут все твои значения полей, которые надо отсортировать.
делаешь этому листу sort() -> получаешь отсортированные значения
проходишься по листу и выдираешь из мапы объекты и складывешь в новый лист
profit! Вот тебе отсортиранные лист объектов по полю Date (или любому другому)

Вот этот метод использован в описании сортировки Custom Setting в APEX guide раздел Custom Setting Methods.
там он применен, так как каст сетинги кешируется а не кверятся, то есть при селекте их не возможно отсортировать.

но если они показали этот метод, то получается, что Каст сеттинги нельзя отсортировать и как sObjects, как описано в ссылке выше на др раздел этой же книги у ответе Дмитрия (раздел Sorting Lists of sObjects)...

[quote="Dmitry Shnyrev"]

Есть ламерский способ, который тоже имеет право на жизнь (сам применял его когда-то):
из своего листа объектов делаешь такую мапу Map<Date, List<sObject>>
(Date в этом случае тип поля по которому ты хочешь отсортировать)
заполняешь эту мапу
из keySet() делаешь list -> это будут все твои значения полей, которые надо отсортировать.
делаешь этому листу sort() -> получаешь отсортированные значения
проходишься по листу и выдираешь из мапы объекты и складывешь в новый лист
profit! Вот тебе отсортиранные лист объектов по полю Date (или любому другому)

[/quote]

Вот этот метод использован в описании сортировки Custom Setting в APEX guide раздел Custom Setting Methods.
там он применен, так как каст сетинги кешируется а не кверятся, то есть при селекте их не возможно отсортировать.

но если они показали этот метод, то получается, что Каст сеттинги нельзя отсортировать и как sObjects, как описано в ссылке выше на др раздел этой же книги у ответе Дмитрия (раздел Sorting Lists of sObjects)...