良いとオブジェクト指向のソリューションです:最初のリンクリストに文字列(人名)を入れないでください。フィールドpersonName
とitemsBought
のクラスCustomer
を作成してください。後者はそれ自体、リンクされたアイテムのリストへの参照になります。今すぐ人のための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));
}
良いとオブジェクト指向のソリューション:に文字列(人物名)を入れないでくださいあなたの最初のリンクされたリスト。代わりに 'personName'と' itemsBought'フィールドを持つ 'Customer'クラスを作成してください。後者はそれ自体、リンクされたアイテムのリストへの参照になります。その人のための 'Customer'オブジェクトのリストを作成しましょう。それで、リンクされた商品リストを各顧客に追加するのは簡単で自然なことです。 –