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/
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