2013-08-26 4 views
4

На основании этого вопроса Increment variable names?Java, методы объекта вызова Копания Список_массивов

У меня есть ArrayList «peopleHolder», который держит различные предметы «лица». Я хотел бы автоматически создавать объекты «person» на основе цикла for. я сделал следующий

peopleHolder.add(new person()); 

Я хотел бы вызывать методы класса человека. например person.setAge; Как я могу назвать такие методы через арраиста? Я хотел бы, чтобы метод устанавливал значения для каждого объекта. Я посмотрел на этот ответ: Java - calling methods of an object that is in ArrayList
Но я думаю, что решение зависит от вызова статического метода, и я хотел бы иметь метод, специфичный для объекта при сохранении значения объектов.

Thanks

+0

Ваш вопрос не ясно, что вы это означает? – nachokk

+0

У меня есть несколько объектов человека.Я автоматически создаю новые объекты человека в «people» arrayList, используя цикл. Я хотел бы получить доступ к методам, которые определяют различные характеристики объектов (setAge, setHeight и т. Д.). Как я могу получить доступ к таким методам для объектов, которые я создал в моем arraylist. –

+0

вы хотите создать ссылку на Arraylist в класс человека, я прав? –

ответ

8

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

List<person> peopleHolder = new ArrayList<person>(); 
peopleHolder.add(new person()); 
peopleHolder.add(new person()); 

Теперь у нас есть два человека в списке, и мы хотим указать их имена. Мы можем сделать это, как этот

for (int i=0; i<list.size(); i++){ 
    list.get(i).setName("newName"+i);//this will set names in format newNameX 
} 

или Оптимизатор для цикла

int i=0; 
for (person p: peopleHolder){ 
    p.setName("newName" + i++); 
} 

BTW вы должны придерживаться Java Naming Conventions и использовать стиль верблюжьего. Классы/интерфейсы/перечисления должны начинаться с буквы верхнего регистра, например Person, первый токен имени переменных/методов должен начинаться с нижнего регистра, а другие с верхним регистром, например peopleHolder.

+0

Довольно уверен, что be 'list.get (i)' вместо 'list.get (0)'. – Makoto

+0

@Makoto yep, исправлено. – Pshemo

+0

Спасибо Pshemo. В методе setName почему вы добавляете i? –

3

Это что вы ищете?

for(person people: peopleHolder){ 
people.setAge(25); 
} 
+0

Yup, это он, спасибо –

2

У меня есть несколько объектов для людей. Я автоматически создаю новый объект объектов в массиве «people», используя цикл. Я хотел бы получить доступ методы, которые определяют различные характеристики объектов (ЗеЬАд, setHeight и т.д.) Как я могу получить доступ к таким методам для объектов я имею создал в моей ArrayList

Точно так же, как вы Создайте.

Для каждого человека в списке, вы можете перебирать его

for(Person person : peopleHolder){ 
    person.setHeight(..); 
    person.setAge(..) 
} 

Для некоторого индекса в списке, вы можете использовать get(int index) в ваш список является ArrayList, то это O (1).

Person p = peopleHolder.get(someIndex); // where 0 <= someIndex < peopleHolder.size() 
p.setHeight(..); 
1

После код вы можете сделать это

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

for (int i = 0; i < 10; i++) { 

    personHolder.add(new Person()); 

} 

// If you want user input, do it in the loop below 
for (Person p : personHolder) { 

    p.setAge(30); 

} 
Смежные вопросы