パラメータ入力の新しいエントリをリストに追加できるようにしたい。
例えば:
public static void theList (List<String> wholeList) {
wholeList = new ArrayList<String>();
wholeList.add("Lettuce");
wholeList.add("Bacon");
wholeList.add("Milk");
wholeList.add(wholeList); <--------- error - addAll doesn't fix it.
上記で「wholeList.add(wholeList)」を試しました。私が意図したのは、追加する必要のある追加の((パラメーターからの)項目、このメソッドを実行するための入力を追加するときの)項目が何であれ、「wholeList」に追加されることです。
ご覧のとおり、レタス、ベーコン、牛乳の3つのアイテムがリストに追加されています。ただし、突然気が変わって、(パラメーターを介して)別のアイテムを追加したい場合は、現在のリスト(wholeList)に追加するだけです。
また、別の質問。
アイテムのリストを1つずつ追加するのではなく(同じリストのインポートを使用して)追加するためのより良い方法はありますか? {「レタス」、「牛乳」、「ベーコン」など}と言いますか?
TY。
私が理解しているように、addAll()
はあなたが必要とするすべてです:
List<String> someList = new ArrayList<String>();
List<String> itemsToAdd = new ArrayList<String>();
itemsToAdd.add("one");
itemsToAdd.add("two");
someList.addAll(itemsToAdd);
// or use handy method which creates temporary list internally:
someList.addAll(Arrays.asList("three", "four"));
さて、あなたのコードは非常に悪いことをします。メソッド内でwholeListを初期化し、メソッドが終了すると、メソッドは削除されます(Javaのポインター)。また、リスト自体を追加したので、コードはおそらくあなたがやりたかったものではありません。
おそらく、メソッド内に新しいリストを作成し、パラメーターのリストにすべての項目を追加することを意図していました。その場合、パラメータから取得したリストで「新規」を使用しないでください。
実際、あなたの質問のタイトルを読んだ後-
コードは次のようになります。
public static void theList (List<String> wholeList) {
wholeList.add("Lettuce");
wholeList.add("Bacon");
wholeList.add("Milk");
existingList.add(wholeList);
リストに値を追加する唯一の「よりクリーンな」方法は次のとおりです。
wholelist.addAll(Arrays.asList("Lettuce", "Bacon", "Milk"));
しかし、私はトップの答えがすでにそれを述べているのを見ます。したがって、メソッドの外部でグローバルプライベート変数として配列を作成することで、さらにクリーンアップできます。また、別の回答が言ったように、パラメータリストと同じ名前を共有しない別のリストが必要です。必要なライブラリの例を次に示します。
import Java.util.Arrays;
import Java.util.List;
import Java.util.ArrayList;
public class Example{
private List<String> globalList = new ArrayList<>();
private String[] list = {"Bacon", "Lettuce", "Milk"};
public static void theList (List<String> wholelist) {
wholelist.addAll(Arrays.asList(list));
globalList.addAll(wholeList);
}
両方のリストの名前としてwholeListを使用する場合は、上記のglobalListをwholelistに変更して、次のようにします。
public static void theList (List<String> wholelist) {
this.wholelist.AddAll(wholelist);
this.wholelist.addAll(Arrays.asList(list));
}
しかし、私はそれを避けたいと思います。