如何在由自定义对象组成的 ArrayList 中设置 get&set 方法



我需要创建一个Java项目,它由以下类组成:Main、File、Person、Address。在Main类中,可以创建人员并为其分配新地址。在File类中,Persons被保存在ArrayList中。在Person类中,有Person对象的属性+构造函数+用于存储分配给Main类中每个Person的地址的ArrayList。Address类具有Adress对象的属性+构造函数。

Address类具有Attributes zip、city和street以及get set Methods。

这就是我的代码:

public class Address   {
private int zip;
private String city;
private String street;  

public Address(int zip, String city, String street){
this.zip= zip;
this.city= city;
this.street= street;}   
public  int Getzip() {
return zip;}        
public  void setZip(int zip) {
this.zip= zip;} 
public String getCity() {
return city;    }

public void setCity (String city) {
this.city= city;    }

public String getStreet () {
return street;  }

public void setStreet(String street) {
this.street = street;}}

在人员类中,有"名字"、"姓氏"属性,每个人员都可以有多个地址,因此一旦创建了人员,就可以为其分配地址。到目前为止,我已经用ArrayList解决了这个问题,每次创建地址时都会保存地址。这是我的个人代码:

import java.util.ArrayList;
public class Person{

private String firstName;
private String lastName;    
private ArrayList<Address> addresses = new ArrayList<Address>();    

Person(String firstName, String lastName){             
this.firstName = firstName ;
this.lastName = lastName ;  }
public void addAddress(int zip, String city, String street)
{Adress ad = new Address (zip, city, street);
addresses.add(ad);    }

public String getfirstName () {
return firstName ;  }

public void setfirstName (String firstName) {
this.firstName= firstName;      }

public String getlastName () {
return lastName ;  }
public void setlastName (String lastName ) {
this.lastName = lastName ;  }}

在File类中,有一个ArrayList,用于保存人员和添加/删除人员的方法。

import java.util.ArrayList;
public  class File{
private ArrayList<Person> persons= new ArrayList<Person>(); 
private int anzahl = 0;

public void addPerson (Person person) {
persons.add(person);
}

public void removePerson (Person person) {
persons.remove(person);
}

我在Main Method中创建了一个新的File对象和一些Person对象。

public class Main {
public static void main(String[] args) {

File listOfPersons= new File();
Person p1 = new Person ("Michael", "Smith");
Person p2 = new Person ("James", "Barkley"); 
Person p3 = new Person ("Olivia", "Atkins");

然后我将人员添加到文件中:

listOfPersons.addPerson(p1); 
listOfPersons.addPerson(p2); 
listOfPersons.addPerson(p3); 

我给每个人分配一个地址:

p1.addAdress(12345,"New York","Street 1");
p1.addAdress(23456,"Los Angeles","Street 2");
p2.addAdress(34567,"Boston","Street 3");
p3.addAdress(456578,"Miami","Street 4");

所以这是我的问题,在Main类中,我必须能够设置或获取每个Person对象的属性。我可以毫无问题地访问和更改属性firstName和lastName。但是,即使知道我已经为每个人分配了地址,我也不能对zip城市街道使用获取或设置方法。

有人能帮我吗?

提前感谢

您将需要另一种方法来获取分配给Person类中每个Person的地址列表。类似于:

public List<Address> getAddresses() {
return addresses;
}

然后,您可以访问主类中存储在该列表中的地址:

List<Address> addressList = p1.getAddresses();
for (Address add : addressList) {
System.out.println(addressList.indexOf(add) + ": " + add.getCity() + ", " + add.getStreet());
}

相关内容

  • 没有找到相关文章

最新更新