web-dev-qa-db-fra.com

Quelle est la meilleure façon d'utiliser Arrays.asList () pour initialiser une liste

J'utilise ce code ci-dessous. Les deux fonctionnent bien dans mon application.

Cas 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"));

Cas 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");

Mais j'ai quelques questions:

  1. Lequel est le meilleur en termes de performances?
  2. Dans quel cas préférer le cas 2?
23
Sitansu

Le cas 2 est plus performant MAIS: il renvoie une liste avec une taille immuable Cela signifie que vous ne pouvez pas ajouter/enlever des éléments dans/depuis:

Retourne une liste fixed-size sauvegardée par le tableau spécifié. (Modifications apportées à la liste renvoyée "write through" dans le tableau.)

Arrays#asList

41
Lital Kolog

Je pense que le cas 2 est comme créer le new String[10]. Vous ne pouvez pas changer la taille mais vous pouvez changer les éléments. Le cas 1 vous permet de faire les deux.

Cela montre ce que vous pouvez faire avec le cas 2: http://grepcode.com/file/repository.grepcode.com/Java/root/jdk/openjdk/8u40-b25/Java/util/Arrays.Java#Arrays. ArrayList

0
zek_w