Лучшая структура данных Java для хранения трехстолбцовой таблицы оракула?Массив из трех столбцов?или двойная карта?

StackOverflow https://stackoverflow.com/questions/1612430

Вопрос

Какая структура данных лучше всего подходит для хранения таблицы оракула размером около 140 строк на 3 столбца.Я думал о многомерном массиве.

Под лучшим я не обязательно имею в виду наиболее эффективный (но мне было бы интересно узнать ваше мнение), поскольку программа будет работать как задание с большим количеством времени на выполнение, но у меня есть некоторые ограничения:

Возможно, что несколько ключей сначала будут иметь значение «null».поэтому первый столбец может иметь несколько нулевых значений.Мне также нужно иметь доступ к элементам из других столбцов.Что-нибудь лучше, чем линейный поиск для доступа к данным?

Итак, еще раз, что-то вроде [][][] будет работать..но есть ли что-то вроде карты из трех столбцов, к которой я могу получить доступ по ключу или второму столбцу?Я знаю, что карты имеют только два значения.

Все данные, вероятно, будут строками или преобразованы в строки.

Спасибо

Это было полезно?

Решение

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

class Record {
   String field1;
   String field2;
   String field3;
}

и

   Map<String, Record> firstKeyMap = new HashMap<String, Record>();
   Map<String, Record> secondKeyMap = new HashMap<String, Record>();

Другие советы

Пользовательский класс с тремя полями и java.util.List этого класса.

В этом случае нет смысла помещать данные в массивы, вы не получаете никакого улучшения производительности и, конечно же, никакого улучшения удобства сопровождения кода.

Это еще один пример того, как люди пишут FORTRAN на объектно-ориентированном языке.

Java об объектах.Было бы намного лучше, если бы вы начали использовать объекты для абстрагирования своей проблемы, скрытия деталей от клиентов и уменьшения связанности.

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

Все данные, вероятно, будут строками или преобразованы в строки.

Это нормально, если это действительно строки, но я бы посоветовал вам заглянуть глубже и посмотреть, сможете ли вы добиться большего.

Например, если вы пишете приложение, использующее кредитные рейтинги, у вас может возникнуть соблазн сохранить его как числовой столбец в базе данных.Но вы можете получить выгоду, если внимательно посмотрите на проблему и инкапсулируете это значение в объект CreditScore.Когда это у вас есть, вы понимаете, что можете добавить что-то вроде единиц измерения («FICO» или «TransUnion»), масштаба (диапазон от 0 до 850) и, возможно, некоторого разнообразного поведения (например, правил, определяющих, когда менять порядок оценок).Вы инкапсулируете все в один объект вместо того, чтобы разбрасывать логику работы с кредитными рейтингами по всей базе кода.

Начните меньше думать о таблицах и столбцах и больше об объектах.Или переключить язык.В Python встроено понятие кортежей.Возможно, это сработает для вас лучше.

Я бы создал объект, который отображает вашу запись, а затем создал коллекцию этого объекта.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top