[英]Add new instance of class to element in arraylist
我將嘗試使我的問題盡可能清楚,所以這里有一些背景知識。 基本上,我想將各種不同的類(客戶端,地址,電話等)一起存儲在客戶端的ArrayList中。 我的Client構造函數包括名稱字符串,Address實例和Phone的另一個實例。 然后將客戶端添加到ArrayList中。
我想要做的是通過首先在列表中搜索客戶端的名稱,然后使用一種方法添加另一個Phone(描述和號碼)而無需添加另一個Phone實例到ArrayList中的現有Client元素。覆蓋現有電話。
//method I'm working on to achieve adding a new Phone
public void addTelephoneNr(){
System.out.println("Namn of customer to add new phone number to: ");
String nameIn = scr.next();
for (int a = 0 ; a<arrayClient.size() ; a++){
if(arrayClient.get(a).getNameClient().equalsIgnoreCase(nameIn)){
Phone newPhone = new Phone();
newPhone.setPhone();
}
}
客戶的構造函數:
public Client(String nameClient, Address addressClient, Phone phoneClient){
this.nameClient = nameClient;
this.addressClient = addressClient;
this.phoneClient = phoneClient;
}
如果我沒有太大的道理,我將嘗試回答我自己沒有想到的問題。
您沒有指定Client類是否具有適當的成員來存儲多個電話。 如果是這樣,請定義一個addPhone
方法,並在您的循環中調用它:
if(arrayClient.get(a).getNameClient().equalsIgnoreCase(nameIn)){
Phone newPhone = new Phone();
newPhone.setPhone();
arrayClient.get(a).addPhone(newPhone);
}
如果客戶可以擁有多個電話號碼,我將使用電話號碼列表,而不是一個電話號碼列表:
private List<Phone> phoneNumbers;
public Client(String nameClient, Address addressClient, Phone phoneClient){
this.nameClient = nameClient;
this.addressClient = addressClient;
this.phoneNumbers = new ArrayList<>();
this.phoneNumbers.add(phoneClient);
}
public void addPhoneNumber(Phone phoneClient){
this.phoneNumbers.add(phoneClient);
}
然后在循環中使用該addPhoneNumber()
方法。
假設您的列表僅包含Client
對象,則只需查找給定名稱的客戶端並添加數字即可:
class Client {
private List<PhoneNumber> phoneNumbers;
private String name;
public boolean hasName(String name) {
return this.name.equals(name);
}
public addNumber(PhoneNumber phoneNumber) {
phoneNumbers.add(phoneNumber);
}
}
List<Client> clients;
public void addNumberToClient(String name, PhoneNumber phoneNumber) {
clients.stream()
.filter(client -> client.hasName(name))
.forEach(client -> client.addNumber(phoneNumber));
}
這會將號碼添加到具有給定名稱的所有客戶端(如果它們應該是唯一的,則應在添加客戶端時對其進行檢查,您可以使用.findFirst().ifPresent(...)
代替.forEach(...)
)。
如果列表中還包含其他類,則會變得更加復雜。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.