Как хранить информацию о многих людях в Java - PullRequest
0 голосов
/ 10 июля 2010

Моя проблема - хранить данные о людях на Java. Я посмотрел на тему веб-сайта Oracle Как использовать таблицы и обнаружил, что для хранения деталей можно использовать массивы объектов (2-мерные).

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

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

Ответы [ 3 ]

3 голосов
/ 10 июля 2010

Массив содержит однородные данные, т.е. обычно класс всего в каждой ячейке массива одинаков.Вы, вероятно, не захотите хранить имя человека и его размер обуви в полях одного типа, так что ... давайте отбросим одно из измерений массива.Вы должны объявить класс с именем что-то вроде Person и указать в нем все атрибуты, которые вы хотите сохранить для человека.Сделав это, вы захотите сохранить только одномерный массив (или что-то) размером Person.

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

Это много работы и подвержено ошибкам.В модифицированных словах Apple, есть класс для этого!Более ранним квалифицированным классом был Vector, класс, в котором можно хранить объекты, и он будет расти каждый раз, когда вы добавляете в него новый объект.В настоящее время класс, используемый для этого (он немного более эффективен), равен ArrayList.То же самое: вы делаете

ArrayList<Person> myList = new ArrayList<Person>();

, а затем вы можете многократно

newPerson = new Person("Bruce", "Wayne", 1972, "Gotham City");
myList.add(newPerson);

, и вы можете получить доступ к людям в списке, выполнив

int personNumber = 0;
Person retrievedPerson = myList.get(personNumber);

или даже

for (Person someone : myList) {
   System.out.println(someone);
}

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

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

TreeMap<Integer, Person> myMap = new TreeMap<Integer, Person>();

newPerson = ...
myMap.put(newPerson.getId(), newPerson);

, затем вы можете получить его с помощью

Person p = myMap.get(id);
2 голосов
/ 10 июля 2010

Посмотрите на java.util.List, java.util.Map и System.arraycopy для некоторых структур данных, которые вам помогут.

0 голосов
/ 10 июля 2010

Сначала вы должны понять, что Object array passed to the JTable won't get stored. Он просто используется для отображения записей того, что вы сделали. Для хранения полученных значений вы должны использовать Файлы или БД.

Вы можете динамически устанавливать размер массива объектов, чтобы вы знали, сколько записей вам действительно нужно показать . Я думаю, что с JDK 1.6 вы не можете динамически изменять размер массива, но предстоящий JDK 7 может предоставить такую ​​возможность.

...