Какую структуру данных я бы предпочел для данного вида данных и их использования - PullRequest
0 голосов
/ 27 декабря 2018

Я создаю проект Java с использованием API PDFBox для создания графика.Я должен сделать мой график полностью настраиваемым.Я добился всего, как это произойдет.А также что будет вход для этого. Но я не могу решить, какую структуру данных использовать для ввода данных.

Мои входные данные

___________________________________________
|Метка 1 (ось Y) |Метка 2 (ось X) |
| ____________________ | _____________________ |
|Работа А |20 |
|Работа Б |30 |
|Работа C |50 |
|Работа D |10 |
|Работа E |27 |
| ____________________ | _____________________ |

Извините за представление данных

График будет иметь горизонтальные полосы.

Порядок этих данных остается прежним.

Я могу найти максимальное значение всех значений (из метки 2 легко).

Любое предположение ??

1 Ответ

0 голосов
/ 27 декабря 2018

На вашем месте я бы использовал LinkedHashMap.Почему?

  1. Он поддерживает порядок вставки
  2. . Вы можете легко получить любой его элемент за O (1) время
  3. Если ключ повторно вставлен в карту,На порядок вставки это не повлияет

Кроме того, получение всех элементов с карты выполняет итерацию по каждой записи, поэтому это будет выглядеть примерно так:

for (Map.Entry<String, Integer> entry : map.entrySet())
{
    System.out.println(entry.getKey() + ":" + entry.getValue());
}

РЕДАКТИРОВАТЬ:

Согласно комментариям, будет полезен даже простой ArrayList, который будет содержать пару работ и значений.Вы можете легко сохранить текущий максимум при добавлении к нему элементов, и тогда вам не придется тратить время на его поиск.Единственное, что я хотел бы предложить, это указать размер, потому что ArrayList увеличивается только на 50% и начинается с размера по умолчанию 10. Также, если вы хотите добавить элемент в ArrayList по одному, сделайте это с помощью простого метода add, чтобы добавить его в конец.

...