Хорошее и объектно-ориентированное решение: не помещайте строки (имена людей) в свой первый связанный список.Вместо этого создайте класс 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 []]
Я бы удобнее, чтобы построить список снизу вверх: добавить детали к перед добавлением клиента в список лиц. Мы можем добавить дополнительное удобство с конструктором varargs, который принимает как имя, так и элементы. Думаю, если бы мы могли сделать:
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));
}
Хорошая и объектно-ориентированное решение: Не помещайте строки (имена) человека в ваш первый связанный список. Вместо этого создайте класс 'Customer' с поля' personName' и 'itemsBought'. Последний сам будет ссылкой на связанный список предметов. Теперь создайте список объектов «Customer» для лиц. Тогда будет просто и естественно добавить связанный список элементов каждому клиенту. –