|
|
|
Liz |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 26.8.2018 Репутация: нет Всего: нет |
Задача такова, мучаюсь уже третий день :(
У меня есть огромный файл, из которого я считываю данные в ArrayList объектов. В итоге я получаю много объектов класса Result, состоящие из трех пунктов: String userId, String typeId, double evaluation. Мне надо наименьшим количеством проходов по массиву определить: 1. Все пользовательские Id, которые чаще всех встречаются. Аналогично, все Id типов 2. Все пользовательские Id, с наибольшей оценкой. (тут проще, я нахожу max, а потом по циклу вывожу id, может, есть лучше способ?) userId по типу: С13DGULS36MOYW typeID: K134RR6KK9 evaluation: 4.8 Спасибо большое!! |
|||
|
||||
LSD |
|
|||
Leprechaun Software Developer Профиль Группа: Модератор Сообщений: 15711 Регистрация: 24.3.2004 Где: Dublin Репутация: нет Всего: 537 |
Все которые чаще всего встречаются - это просто все ID Скорее всего тут должны быть не все, а N наиболее часто встречающихся. Боюсь что тут придется делать 2 прохода. Первый считаем для каждого ID количество вхождений, второй отбираем N наиболее часто встречающихся. Создаешь Map<String, List<String>> и заполняешь по мере прохождения по списку.
Можно сделать за один проход: сохраняем оценку и список ID с данной оценкой. Если очередной Result обладает более высокой оценкой: то сохраняем её как максимум, а список ID с данной оценкой очищаем и добавляем туда текущий элемент. Если очередной Result обладает оценкой равной текущей максимальной, то добавляем его в список. Если очередной Result обладает оценкой меньшей текущей максимальной, то пропускаем его. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Akina |
|
|||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 453 |
А затолкать один раз этот "огромный файл" в какую-никакую БД (а хоть бы и встраиваемую) да и переложить на неё все эти геморрои - не? Для индексированной таблицы получение требуемых данных - тьфу! -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Liz |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 26.8.2018 Репутация: нет Всего: нет |
Спасибо всем за помощь!
|
|||
|
||||
LSD |
|
|||
Leprechaun Software Developer Профиль Группа: Модератор Сообщений: 15711 Регистрация: 24.3.2004 Где: Dublin Репутация: нет Всего: 537 |
Это не алгоритм. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Akina |
|
|||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 453 |
Ну почему? "Провести предварительную подготовку массива данных для того, чтобы не пришлось самостоятельно рожать алгоритм и создавать программный код для его реализации" - тоже вполне себе алгоритм. Алгоритм упрощения себе жизни... И потом - что-то мне подсказывает, что автору решить задачу важнее, чем сделать это непременно по собственноручно реализованному алгоритму... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
LSD |
|
|||
Leprechaun Software Developer Профиль Группа: Модератор Сообщений: 15711 Регистрация: 24.3.2004 Где: Dublin Репутация: нет Всего: 537 |
Мне наоборот кажется, что задача учебная. И способ решения важнее, результата. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Akina |
|
|||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 453 |
Ну тогда требуемые данные нужно получать непосредственно во время считывания. Чё ждать-то? И потом - вообще непонятно, чей и какой это имеется в виду ArrayList. Если из java - то нафига что-то мапить, когда есть Collections.frequency, который всё это сделает за нас. А если из .Net - так можно его Sort и не париться с мапом, тупо просчитав в один проход... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
LSD |
|
|||
Leprechaun Software Developer Профиль Группа: Модератор Сообщений: 15711 Регистрация: 24.3.2004 Где: Dublin Репутация: нет Всего: 537 |
Теме была из Java перенесена. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Akina |
|
|||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 453 |
Тогда это в минус переносившему - надо было указать...
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Munaya |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 13.12.2020 Репутация: нет Всего: нет |
Модератор: Сообщение скрыто. |
|||
|
||||
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |