|
|
|
Посоветуйте с сортировкой через Collections.sort(list, new Comparator....)
|
|||
|---|---|---|---|
|
#18+
Есть arrayList объектов с полями num, name и id в следующем порядке num name id 0 null p 0 b c 0 null d 4 e r 5 p t Как отсортировать одним Collections.sort(list, new Comparator....), чтобы результатом получился список num name id 4 e r 5 p t 0 b c 0 null d 0 null p то есть сначала все объекты у которых num !=0, отсортировать по num в порядке возрастания, потом объекты у которых num == 0 && name ! = null, отсортировать по name в алфавитном порядке, потом объекты у которых num == 0 && name == null, отсортировать по id в алфавитном порядке???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2014, 15:47 |
|
||
|
Посоветуйте с сортировкой через Collections.sort(list, new Comparator....)
|
|||
|---|---|---|---|
|
#18+
Так а в чем вопрос ваш? Вы хотите, что бы здесь за вас реализацию компаратора написали? :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2014, 15:49 |
|
||
|
Посоветуйте с сортировкой через Collections.sort(list, new Comparator....)
|
|||
|---|---|---|---|
|
#18+
DEVcoach, да, именно используя один раз Collections.sort(list, new Comparator...), а не три раза:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2014, 15:54 |
|
||
|
Посоветуйте с сортировкой через Collections.sort(list, new Comparator....)
|
|||
|---|---|---|---|
|
#18+
а зачем 3 раза? Все в одном можно написать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2014, 16:07 |
|
||
|
Посоветуйте с сортировкой через Collections.sort(list, new Comparator....)
|
|||
|---|---|---|---|
|
#18+
Psolao, Пытался реализовать в одном результат неудачный, на данный момент у меня реализовано тремя Collections.sort() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2014, 16:10 |
|
||
|
Посоветуйте с сортировкой через Collections.sort(list, new Comparator....)
|
|||
|---|---|---|---|
|
#18+
Типа так если объект1.номер>объект2.номер вернуть 1 иначе если объект1.номер<объект2.номер вернуть -1 иначе { если (объект1.номер==пусто и объект2.номер==пусто) { если объект1.id>объект2.id вернуть 1 иначе если объект1.id<объект2.id вернуть -1 иначе вернуть 0 } иначе если (объект2.номер==пусто) вернуть 1 иначе если (объект1.номер==пусто) вернуть -1 иначе вернуть объект1.номер.сравнить (объект2.номер) } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2014, 16:14 |
|
||
|
Посоветуйте с сортировкой через Collections.sort(list, new Comparator....)
|
|||
|---|---|---|---|
|
#18+
id тоже как строки сравнивать - не посмотрел что он у тебя строка. Привык что id число. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2014, 16:29 |
|
||
|
Посоветуйте с сортировкой через Collections.sort(list, new Comparator....)
|
|||
|---|---|---|---|
|
#18+
Psolao, да id у меня текстовый тама будет compareTo, ну вышеприведенный код отображает не в том порядке :) 0 b c 0 null d 0 null p 4 e r 5 p t ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2014, 17:57 |
|
||
|
Посоветуйте с сортировкой через Collections.sort(list, new Comparator....)
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2014, 22:24 |
|
||
|
Посоветуйте с сортировкой через Collections.sort(list, new Comparator....)
|
|||
|---|---|---|---|
|
#18+
Psolao, благодарю, чучуть некорректно выводит, но думаю дальше сам разберусь) При списке 0 y p 0 b c 0 null d 4 e r 5 p t Выводит 4 e r 5 p t 0 b c 0 null d 0 y p А надо 4 e r 5 p t 0 b c 0 y p 0 null d ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2014, 10:46 |
|
||
|
Посоветуйте с сортировкой через Collections.sort(list, new Comparator....)
|
|||
|---|---|---|---|
|
#18+
Psolao, вообщем добавил public class TestObjectComparator implements Comparator<TestObject> { @Override public int compare(TestObject arg0, TestObject arg1) { int compNum=compareNum(arg0,arg1); if (compNum!=0) return compNum; int compName=compareName(arg0,arg1); if (compName!=0) return compName; return compareId(arg0,arg1); } private int compareNum(TestObject arg0, TestObject arg1){ if (arg0.num==arg1.num) return 0; else if (arg0.num==0 || arg0.num>arg1.num) return 1; else return -1; } private int compareName(TestObject arg0, TestObject arg1){ if (arg0.name==null && arg1.name==null) return 0; else if (arg0.name==null) return 1; else if (arg1.name==null) return 0; else return arg0.name.compareTo(arg1.name); } private int compareId(TestObject arg0, TestObject arg1){ if (arg0.name==null) return 0; else if (arg1.name==null) return 0; else return arg0.id.compareTo(arg1.id); } Теперь выводит то, что надо 4 e r 5 p t 0 b c 0 y p 0 null d ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2014, 11:32 |
|
||
|
Посоветуйте с сортировкой через Collections.sort(list, new Comparator....)
|
|||
|---|---|---|---|
|
#18+
Поздно было спать хотел, и опечатался, вот как нужно Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2014, 19:57 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38668999&tid=2127049]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
190ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 527ms |

| 0 / 0 |
