0

わかりました、質問がありました。私のコードは動作しているように見えましたが、特によくテストしていません。

ArrayList に要素を設定しようとしています。

ArrayList<StringBuilder> g=new ArrayList<StringBuilder>();
//set the array contents
g.get(2).append("Something");

私は次のようなことをしていることを知っています

StringBuilder q=g.get(2);
q.append("something else?");
g.set(2,q);

動作し、おそらくそれを行う正しい方法ですが、それを行うには長い道のりのようです.

私はこれを正しく行っていますか?そうでない場合、私が言及した2番目の方法が唯一の方法ですか?

4

3 に答える 3

2

その場で変更された のリストがある場合はStringBuilder、最初の方法で問題ありません。不変型( など) のリストがある場合String、取得したオブジェクトを変更できないため、結果が同じオブジェクトではないため、2 番目のメソッドのバリアントを使用する必要があります。

例えば

List<StringBuilder> widgets = new ArrayList<StringBuilder>();
// ...
StringBuilder widget = widgets.get(0);
widget.append(" version 2");

List<String> widgets = new ArrayList<String>();
// ...
String widget = widgets.get(0);
widgets.set(2, widget + " version 2");
于 2012-12-15T21:08:23.047 に答える
1

List#get() メソッドを呼び出すと、StringBuilder オブジェクトへの参照が取得されます。StringBuilder は可変オブジェクトです。したがって、StringBuilder のインデックス 2 のコンテンツを変更する場合は、変更後に参照を再度設定する必要はありません。したがって、以下で十分です。

g.get(2).append("Something");
于 2012-12-15T21:10:04.393 に答える
0

g.get(2).append("Something");リスト値をStringBuilderインスタンスで初期化した場合に機能します。そうしないと、 が得られますNullPointerException

ArrayListコードで of 型を定義しますが、 of型StringBuilderを割り当てようとしますが、これは機能しないことに注意してください。ArrayListInteger

于 2012-12-15T21:09:14.170 に答える