Monday, October 20, 2014

Adăugarea rapidă a unor elemente într-o listă nouă

Am întâlnit unele situații în care am avut nevoie rapid de o listă (java.util.List) căreia să-i adaug, la fel de rapid, câteva elemente. Primul lucru ce îmi venea în minte era să creez o astfel de listă, căreia să-i adaug apoi, rând pe rând elemente, apelând metoda add() astfel:

List<String> list = new ArrayList<>();
list.add("Luni");
list.add("Marti");
list.add("Miercuri");
list.add("Joi");
list.add("Vineri");

O modalitate destul de enervantă și ineficientă, nu?
La un moment dat însă, am găsit o variantă ceva mai elegantă, care se folosește de clase interne, anonime:

List<String> list = new ArrayList<>() { {
      add("Luni");
      add("Marti");
      add("Miercuri");
      add("Joi");
      add("Vineri");
   }
};

ACTUALIZARE: Se pare că varianta aceasta e un anti-pattern, deci nu e bine să o folosim. Detalii aici:
http://blog.jooq.org/2014/12/08/dont-be-clever-the-double-curly-braces-anti-pattern/

În plus, un coleg de muncă mi-a atras atenția că există o variantă și mai rapidă:

List<String> list = Arrays.asList("Luni", "Marti", "Miercuri", "Joi", "Vineri");

Acest ultim exemplu este discutat pe StackOverflow, la următoarea adresă:


Răspunsul acceptat menționează, de asemenea, și faptul că această modalitate nu permite adăugarea de noi elemente acelei liste, întrucât este ”fixed-size”, după cum spune și documentația:



No comments:

Post a Comment