リストがあります< ArrayList <文字列> >オブジェクトがJavaにあります。内側のArrayList <文字列>は一定のサイズです。最小限のメモリ消費でResuse ArrayList
したがって、Listにデータを入力するときに、次のロジックを使用しています。
マップ内のすべてのリストは、NULL値で埋められます。
List<ArrayList<String>> map = new ArrayList<ArrayList<String>>();
ArrayList<String> list = new ArrayList<String>();
for(i = 0; i < 10; i++) {
....
list = new ArrayList<String>();
for(j = 0; j < 10; j++) {
list.add(/* some string */);
}
map.add(list);
//list.clear();
}
私はListオブジェクトに格納する必要が約100000のArrayListのデータセットを持っていると私はインスタンス化したくない: はまた、個別に各ループのリストをインスタンス化し、同じように、私の問題を解決しますメモリオーバーヘッドのため、ArrayListを毎回呼び出します。
List<ArrayList<String>> map = new ArrayList<ArrayList<String>>();
ArrayList<String> list = new ArrayList<String>();
for(i = 0; i < 10; i++) {
....
for(j = 0; j < 10; j++) {
list.add(/* some string */);
}
map.add(new ArrayList<String>(list));
list.clear();
}
は、これらのメソッドの(パフォーマンスが優先ではありません)私に少なくともメモリ消費を与える:
だから、代わりに別途、それをインスタンス化のため、私は1つの以上の方法を試してみましたか? これ以外の場合は、これをより効率的に行うための別の方法がありますか?
「新しいArrayList(list)」を実行していることにお気づきになりませんでした。それから、「クリア」する必要があります –
マップオブジェクトに追加されたリストもnull値にクリアされていない場合を除いて、例外があります。私はそれをクリアする前にリストへの参照を変更する必要があり、唯一の方法はそれをインスタンス化することです。 – Penman
コードブロック2は 'クリア'を行う必要はありません –