ArrayList
たまにしか使用されないフィールドを持つクラスがいくつかあります。私は通常、これらのフィールドを次のように初期化します。
private List<Widget> widgets = new ArrayList<>();
オーバーロード コンストラクターを使用して初期容量を設定することについて理解しているので、これらのフィールドを次のように宣言する必要があるかどうか疑問に思っています。
private List<Widget> widgets = new ArrayList<>(0);
ジレンマは、リストを 0 で初期化すると、アイテムを 1 つでも追加するために常にリスト自体を再初期化する必要があることです。しかし、デフォルトのコンストラクターを使用すると、デフォルトの容量が 10 になり、未使用の容量でメモリを浪費しているアイテムがたくさん (そしてたくさんある可能性があります) ある可能性があります。
「どのくらいの頻度で」「どのくらいの数のアイテムを期待しているか」と質問する人もいると思いますが、私は本当に「ベスト プラクティス」のアプローチを探しています。すべてが等しい場合、時々使用されるリストで、(0)
またはリストで初期化する必要がありますか?()
常にリストを初期化するのが私たちの部門のポリシーなので、単にリストをそのままにしておくことはできませんnull
。