我将尝试尽可能清楚地表达我的问题,所以这里有一些背景知识。基本上我有各种不同的类(客户端,地址,电话等),我想将它们存储在ArrayList for Client中。我的Client构造函数包括name的字符串以及Address的另一个实例和Phone的另一个实例。然后将客户端添加到ArrayList中。
我希望能够做的是首先在ArrayList中的现有Client元素中添加第二个Phone实例,方法是首先在列表中搜索客户端的名称,然后使用方法添加另一个Phone(描述和数字)而不覆盖现有的电话。
//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;
}
如果我没有多大意义,我会尝试回答一些我没想过的问题。
答案 0 :(得分:0)
您没有指定您的客户端类是否有适当的成员来存储多个电话。如果是,请定义addPhone
方法,并在循环中调用它:
if(arrayClient.get(a).getNameClient().equalsIgnoreCase(nameIn)){
Phone newPhone = new Phone();
newPhone.setPhone();
arrayClient.get(a).addPhone(newPhone);
}
答案 1 :(得分:0)
如果客户可以拥有多个电话号码,我会使用一个电话号码列表而不是一个电话号码:
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()
方法。
答案 2 :(得分:0)
假设您的列表中只包含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(...)
)。
如果列表中包含其他类,则会更复杂。