Массив содержит однородные данные, т.е. обычно класс всего в каждой ячейке массива одинаков.Вы, вероятно, не захотите хранить имя человека и его размер обуви в полях одного типа, так что ... давайте отбросим одно из измерений массива.Вы должны объявить класс с именем что-то вроде 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);