Зачем использовать параллельные массивы в Java? - PullRequest
6 голосов
/ 18 марта 2011

Есть ли реальный вариант использования параллельных массивов в Java?Кажется слишком громоздким для поддержки N массивов, которые взаимосвязаны.

Пример:

int  ages[]   = {0,          17,        2,          52,         25};
String names[] = {"None",    "Mike",    "Billy",    "Tom",      "Stan"};
int  parent[] = {0,          3,         1,          0,          3};

Я могу просто создать класс Person и хранить объекты в одном массиве.Будет немного дороже, но гораздо проще в использовании, верно?

Ответы [ 4 ]

12 голосов
/ 18 марта 2011

Единственное реальное преимущество параллельных массивов в Java - это (крайняя IMO) мера, позволяющая уменьшить выделение объектов и / или использование кучи. Для достаточно большой коллекции объектов 3 массива будут занимать меньше места И использовать меньше объектов, чем один массив экземпляров некоторого пользовательского класса.

Этот подход обычно плохая идея, поскольку он делает ваш код более хрупким. Создание и использование пользовательского класса - лучший подход в большинстве ситуаций.

Примечание: Советы по повышению производительности для Android рекомендуют иное, но эти советы в первую очередь направлены на уменьшение частоты / влияния пауз ГХ на пользовательский опыт. И даже этот совет объясняется несколькими способами.

11 голосов
/ 18 марта 2011

Параллельные массивы являются пережитком таких языков, как Basic (исходный), в которых нет структур данных, кроме массивов.Вместо этого вы должны определять объекты так, как вы предлагаете.

1 голос
/ 18 марта 2011

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

1 голос
/ 18 марта 2011

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

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

...