|
Разбить list на list из sublist
|
|||
---|---|---|---|
#18+
Есть условный список с объектами. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Я хочу разбить список на отдельные списки, в котором будет по 3 элемента. Т.е. результат должен быть такой: [[A, B, C], [D, E, F], [G, H, K], [L]] В Google Guava и Apache Commons есть метод, который выполняет эту работу. В Guava это например так: Код: java 1.
У меня вопрос, можно ли обойтись без сторонних библиотек и хитроумных манипуляций вроде этой (далее пример со stackoverflow): Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Например, используя стримы? Находил похожее решение для чисел: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Но проблема в том, что для объектов я не могу сделать такую группировку. Что можно придумать? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 11:02 |
|
Разбить list на list из sublist
|
|||
---|---|---|---|
#18+
keep it simple в чем задача-то? чтоб было понятно, максимально компактно, максимально быстро, чтоб без внешних зависимостей или чтоб просто работало? hsadik Но проблема в том, что для объектов я не могу сделать такую группировку в смысле, какую группировку для каких объектов? то решение, которое ты нашел (на стримах) - оно не для чисел, а универсальное. Это стандартный прием с range, когда в стриме нужен индекс элемента, а не сам элемент Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
как по мне код слегка не очевиден, т.е. через месяц придется морщить мозг, пытаясь понять wtf тут происходит. Но если очень хочется и назвать метод понятно, то можно. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 12:03 |
|
Разбить list на list из sublist
|
|||
---|---|---|---|
#18+
21-й век пройдет под флагом функциональщины. Это очевидно. Но стоит-ли нам ВСЕГДА искать решение а-ля stream-processing? Может быть мы сначала решим задачу императивно? Посмотрим. А потом уже от него подойдем к поточно-иммутабельной e.t.c. Просто есть задачи где ФП реально летает (описание грамматик) и без него невозможно и есть другой мир. Мир процессоров и регистров и памяти с кешами. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 19:05 |
|
Разбить list на list из sublist
|
|||
---|---|---|---|
#18+
Я-бы усугубил задачу. Не нужен вам List. Он предполагает интерфейс индексатора. А его в природе может тоже не быть. Вы данные можете тоже получать из внешнего мира не как массив. А тоже как поток чего-то неогранченного. Больше чем Integer.MAX_INT элементов. Попробуйте решить вот в таком ключе Код: java 1. 2. 3.
или так. Это тоже самое. (Есть обертка для перехода). Код: java 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 19:22 |
|
Разбить list на list из sublist
|
|||
---|---|---|---|
#18+
chpasha как по мне код слегка не очевиден - никаких гарантий на упорядоченность (на вход же элементы упорядоченно идут) - никаких гарантий на мутабельность результата при этом если делать "по классике", то кода там аж 4 строки. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 19:32 |
|
Разбить list на list из sublist
|
|||
---|---|---|---|
#18+
Надо в виде теста сразу писать. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2020, 00:09 |
|
|
start [/forum/topic.php?fid=59&fpage=12&tid=2120675]: |
0ms |
get settings: |
23ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
204ms |
get tp. blocked users: |
2ms |
others: | 303ms |
total: | 617ms |
0 / 0 |