web-dev-qa-db-ja.com

Arrays.asList()を使用してリストを初期化する最良の方法は何ですか

以下のコードを使用します。私のアプリケーションでは両方とも正常に機能しています。

事例1.

List<String> coreModules =
    new ArrayList<String>(Arrays.asList(
        "TOOLBAR_TO_DO_LIST",
        "TOOLBAR_PROPERTY",
        "TOOLBAR_PEOPLE",
        "TOOLBAR_INSURANCE",
        "TOOLBAR_BATCH",
        "TOOLBAR_INFORMATION_REFERENCE",
        "TOOLBAR_LR_PROPERTY",
        "TOOLBAR_CASE_FOLDER",
        "TOOLBAR_INSPECTION_RESULT",
        "TOOLBAR_MY_OFFICE"));

事例2。

List<String> coreModules =
    Arrays.asList(
        "TOOLBAR_TO_DO_LIST",
        "TOOLBAR_PROPERTY",
        "TOOLBAR_PEOPLE",
        "TOOLBAR_INSURANCE",
        "TOOLBAR_BATCH",
        "TOOLBAR_INFORMATION_REFERENCE",
        "TOOLBAR_LR_PROPERTY",
        "TOOLBAR_CASE_FOLDER",
        "TOOLBAR_INSPECTION_RESULT",
        "TOOLBAR_MY_OFFICE");

しかし、いくつか質問があります。

  1. パフォーマンスの点でどちらが優れていますか?
  2. どの場合、ケース2を選択しますか?
23
Sitansu

ケース2はパフォーマンス面では優れていますが、不変サイズのリストを返します。つまり、要素を要素に追加したり、要素から要素を削除することはできません。

指定された配列に連動するfixed-sizeリストを返します。 (返されたリストへの変更は、配列への「書き込み」)。

Arrays#asList

41
Lital Kolog

ケース2はnew String[10]を作成するようなものだと思います。サイズは変更できませんが、要素は変更できます。ケース1では、両方を行うことができます。

これは、ケース2でできることを示しています。 http://grepcode.com/file/repository.grepcode.com/Java/root/jdk/openjdk/8u40-b25/Java/util/Arrays.Java# Arrays.ArrayList

0
zek_w