|
Алгоритм сортировки файлов из нескольких папок.
|
|||
---|---|---|---|
#18+
Есть 2 и более папки. В них есть файлы. Нужно отсортировать это все дело в один список таким образом что бы: 1 файл из первой папки, 1 файл из второй папки .... a файл из n папки. Сейчас сделал банально случайную выборку из каждой папки. Собрал это все в кучу. Потом так же рандомно сортирую, только уже все вместе. Получается не очень. Подскажите как можно сделать? ибо у самого чет не доходят мозги до этого. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 12:21 |
|
Алгоритм сортировки файлов из нескольких папок.
|
|||
---|---|---|---|
#18+
сортировка слиянием? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 12:40 |
|
Алгоритм сортировки файлов из нескольких папок.
|
|||
---|---|---|---|
#18+
забыл ник, слить все в одно и отсортировать? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 12:53 |
|
Алгоритм сортировки файлов из нескольких папок.
|
|||
---|---|---|---|
#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. 29. 30.
Нормально? или можно как-то улучшить алгоритм? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 13:04 |
|
Алгоритм сортировки файлов из нескольких папок.
|
|||
---|---|---|---|
#18+
folders - List<File>, получаю в методе сортировке. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 13:04 |
|
Алгоритм сортировки файлов из нескольких папок.
|
|||
---|---|---|---|
#18+
1) Зачем сортировать файлы а не их имена(строки) 2) Возьми замапь все файлы на их имена, и положи в SortedSet Код: java 1. 2. 3.
3) Код ужасный конечно... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 13:37 |
|
Алгоритм сортировки файлов из нескольких папок.
|
|||
---|---|---|---|
#18+
забыл ник, зачем мне это? файлы разные в каждой папке. Требование - что бы были файли последовательные, как я описывал выше. А не вразброс. Главное что бы не попадались файлы из одной и той же папки не более чем раз. Чем ужасен? агрументируйте. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 14:03 |
|
Алгоритм сортировки файлов из нескольких папок.
|
|||
---|---|---|---|
#18+
забыл ник2) Возьми замапь все файлы на их имена, и положи в SortedSet Код: java 1. 2. 3.
Походу цель задачи даже не читали. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 14:05 |
|
Алгоритм сортировки файлов из нескольких папок.
|
|||
---|---|---|---|
#18+
Tsyklop Походу цель задачи даже не читали. Читал, но в очередной раз сделал типичную ошибку - когда непонятно - додумал. Решительно непонятно, как совмещаются вот эти требования, и что вообще надо авторНужно отсортировать это все дело в один список таким образом что бы: 1 файл из первой папки, 1 файл из второй папки .... a файл из n папки. авторТребование - что бы были файли последовательные, как я описывал выше. А не вразброс. Главное что бы не попадались файлы из одной и той же папки не более чем раз Абстрагируясь от деталей, все же непонятно, почему сортировать(если тут дейтсвительно сортировка) именно файлы, а не их имена? Потом файл можно легко прочитать по имени, ну это лирика. авторЧем ужасен? агрументируйте. Сначала общие для всех Java-программ 1) Мешанина стримов и прямой итерации, я бы делал конечно на стримах, но можно и через for(), но мешать это совсем ни о чем 2) catch ArrayIndexOfBoundException это вообще никакой код ревью пройти не может 3) Все эти проверки на нулл просто засоряют понимание того что код делает. Фильтруйте все раньше Ну и как приверженец ФП, я бы конечно еще избавился от mutable переменных, 99% все можно решить через однострочный стрим, но это уже на любителя ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 14:17 |
|
Алгоритм сортировки файлов из нескольких папок.
|
|||
---|---|---|---|
#18+
забыл ник, Есть 3 папки. В каждой папке есть файлы. Мне нужно отсортировать файлы из этих папок таким образом: файл из первой папки, файл из второй папки, файл из первой, из второй и т.д. На счет имен согласен, можно же получить массив строк - file.list() . Додумывать зачем? вы человек, а не обезьяна, разговаривать умеете. (без обид). На счет кода. Отсортируй мне таким образом файлы или же строки на стримах. НО! что бы это было максимально не ресурсно затратно. Я убрал стрим, который выше привел - сразу уменьшилось использование памяти на 5 MB. По коду: 1. Если вы словите ArrayIndexOutOfBoundsException у вас вылетит все, а значит что? цель не будет выполнена. 2. Знаете что listFiles() и даже list() могут кинуть null . где же это до этого "отфильтровать"? 3. В папках может быть разное кол-во файлов. К примеру, в первой папке 100 файлов, во второй 150. Вы будете брать большее число. И если вы захотите дернуть 101 файл (или строку) будет эксепшн выхода за границы массива. Как решать? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 14:29 |
|
Алгоритм сортировки файлов из нескольких папок.
|
|||
---|---|---|---|
#18+
TsyklopПодскажите как можно сделать? Банальный обход в ширину. Погуглите по фразе. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 15:06 |
|
Алгоритм сортировки файлов из нескольких папок.
|
|||
---|---|---|---|
#18+
TsyklopПо коду: 1. Если вы словите ArrayIndexOutOfBoundsException у вас вылетит все, а значит что? цель не будет выполнена. 2. Знаете что listFiles() и даже list() могут кинуть null . где же это до этого "отфильтровать"? 3. В папках может быть разное кол-во файлов. К примеру, в первой папке 100 файлов, во второй 150. Вы будете брать большее число. И если вы захотите дернуть 101 файл (или строку) будет эксепшн выхода за границы массива. Как решать? ArrayIndexException и количество файлов в папке абсолютно ортогонально к решаемой проблеме, это искууствуенно введенные вами же ограничения, с которыми вы активно боретесь. На Java, сложно написать хороший код, на Scala бы я отсортировал листы по количеству эдементов и обошелся одним foldLeft. Вот более-менее приличная версия на Java(жалко больше времени тратить), правда она основана на рекурсии и если папок много - то может и свалиться. Тогда надо делать менее красиво, через тот же обход в ширину, как уже подсказали Код: 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. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 15:20 |
|
|
start [/forum/topic.php?fid=59&msg=39711700&tid=2121745]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
66ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
others: | 335ms |
total: | 499ms |
0 / 0 |