好的和麪向對象的解決方案是:不要把字符串(人名)放到你的第一個鏈表中。相反,創建一個類Customer
與字段personName
和itemsBought
。後者本身就是對項目鏈接列表的引用。現在爲這些人列出一個Customer
對象。然後,將項目的鏈接列表添加到每個客戶將是直接和自然的。
public class Customer {
String personName;
List<String> itemsBought;
public Customer(String personName) {
this.personName = personName;
itemsBought = Collections.emptyList();
}
public void setItemsBought(List<String> itemsBought) {
this.itemsBought = itemsBought;
}
@Override
public String toString() {
return personName + " bought " + itemsBought;
}
}
有了這個類,你可以這樣做:
LinkedList<Customer> person = new LinkedList<>();
LinkedList<String> item = new LinkedList<String>();
LinkedList<String> item2 = new LinkedList<String>();
person.add(new Customer("John"));
person.add(new Customer("Amy"));
person.add(new Customer("Bob"));
person.add(new Customer("Michael"));
item.add("Eggs");
item.add("Bread");
item.add("Ham");
item2.add("Toilet roll");
item2.add("Eggs");
person.get(0).setItemsBought(item);
person.get(1).setItemsBought(item2);
System.out.println(person);
此打印:
[John bought [Eggs, Bread, Ham], Amy bought [Toilet roll, Eggs], Bob bought [], Michael bought []]
我會覺得它生成列表自下而上更方便:添加項目到客戶將客戶添加到人員列表之前。我們可以使用可變參數構造函數來添加更多的便利,該構造函數接受名稱和項目。想如果我們可以這樣做:
person.add(new Customer("John", "Eggs", "Bread", "Ham"));
person.add(new Customer("Amy", "Toilet roll", "Eggs"));
person.add(new Customer("Bob"));
// etc.
如果我們改變Customer
構造函數,下面,我們可以:
public Customer(String personName, String... itemsBought) {
this.personName = personName;
this.itemsBought = new LinkedList<>(Arrays.asList(itemsBought));
}
好和麪向對象的解決方案:不要把字符串(人名)成你的第一個鏈表。相反,用'personName'和'itemsBought'來創建一個類'Customer'。後者本身就是對項目鏈接列表的引用。現在爲這些人制作一個「客戶」對象列表。然後,將項目的鏈接列表添加到每個客戶將是直接和自然的。 –