Jeśli zaznaczysz API dla List
zauważysz mówi:
Interface List<E>
Będąc interface
środkiem, nie można go utworzyć (nie new List()
jest to możliwe).
Jeśli sprawdzisz ten link, znajdziesz kilka class
es, które implementują List
:
Wszystkie znane klasy wdrożeniowe:
AbstractList
, AbstractSequentialList
, ArrayList
, AttributeList
, CopyOnWriteArrayList
, LinkedList
, RoleList
, RoleUnresolvedList
, Stack
,Vector
Można je utworzyć. Skorzystaj z ich linków, aby dowiedzieć się więcej na ich temat, IE: aby dowiedzieć się, który lepiej pasuje do twoich potrzeb.
3 najczęściej używane to:
List<String> supplierNames1 = new ArrayList<String>();
List<String> supplierNames2 = new LinkedList<String>();
List<String> supplierNames3 = new Vector<String>();
Premia:
Możesz także utworzyć instancję z wartościami, w łatwiejszy sposób, używając Arrays
class
:
List<String> supplierNames = Arrays.asList("sup1", "sup2", "sup3");
System.out.println(supplierNames.get(1));
Pamiętaj jednak, że nie możesz dodawać więcej elementów do tej listy, ponieważ jest to fixed-size
.
int[] a = {1,2,3}; System.out.println(Arrays.asList(a)); // [[I@70cdd2]
ArrayList
, użyjnew ArrayList<>(Arrays.asList("sup1", "sup2", "sup3"))
Nie można utworzyć instancji interfejsu, ale istnieje kilka implementacji:
JDK2
JDK7
JDK8
JDK9
Ponadto istnieje wiele innych sposobów dostarczanych przez inne biblioteki, takie jak Guava .
źródło
Lista jest interfejsem , nie można utworzyć instancji interfejsu, ponieważ interfejs jest konwencją, jakie metody powinny mieć twoje klasy. Aby utworzyć instancję, potrzebujesz kilku realizacji (implementacji) tego interfejsu. Wypróbuj poniższy kod z bardzo popularnymi implementacjami interfejsu List:
lub
źródło
Będziesz musiał użyć
ArrayList<String>
lub coś takiego.List<String>
jest interfejsem.Użyj tego:
źródło
Lista jest interfejsem i nie można zainicjować interfejsu. Zamiast tego utwórz instancję klasy implementującej.
Lubić:
źródło
Lista to tylko interfejs, definicja jakiejś ogólnej listy. Musisz podać implementację tego interfejsu listy. Dwa najczęstsze to:
ArrayList - lista zaimplementowana w tablicy
LinkedList - lista zaimplementowana jak połączony łańcuch elementów
źródło
W większości przypadków chcesz mieć prostą
ArrayList
implementacjęList
Przed wersją 7 JDK
JDK 7 i nowsze wersje mogą korzystać z operatora diamentowego
Więcej informacji znajduje się tutaj Dokumentacja Oracle - Kolekcje
źródło
W zależności od rodzaju listy, której chcesz użyć, coś takiego
powinienem zacząć.
List to interfejs, ArrayList to jedna implementacja interfejsu List. Więcej implementacji, które mogą lepiej odpowiadać Twoim potrzebom, można znaleźć, czytając JavaDocs interfejsu listy .
źródło
Jeśli chcesz po prostu stworzyć niezmienny obiekt
List<T>
z jednym obiektem, możesz użyć tego interfejsu API:Więcej informacji: dokumenty
źródło
Lista jest interfejsem. Nie można użyć listy do jej zainicjowania.
Oto niektóre z klas opartych na Listach,
Możesz użyć dowolnego z nich zgodnie ze swoimi wymaganiami. Każda z tych klas ma swoje własne cechy.
źródło
Na wszelki wypadek ktoś nadal zastanawia się nad tym pytaniem. Ponieważ widzę, że jeden lub dwóch nowych użytkowników ponownie zadaje to samo pytanie i wszyscy mówią wtedy: Nie, nie możesz tego zrobić, Drogi Ostrożności , Oprócz wszystkich podanych tutaj odpowiedzi, chciałbym podać dodatkowe informacje - Tak, możesz faktycznie do, List list = new List (); Ale kosztem napisania implementacji wszystkich metod interfejsów. Pojęcie to nie jest po prostu List list = new List (); ale
..... i tak dalej (nie mogę napisać wszystkich metod.)
To jest przykład klasy Anonimowej . To jest poprawne, gdy ktoś mówi: Nie , nie możesz utworzyć interfejsu, i to prawda. Ale nigdy nie można powiedzieć, że NIE MOŻESZ napisać List list = new List (); ale najwyraźniej możesz to zrobić i trudno powiedzieć, że nie możesz .
źródło
List
. Zamiast tego deklaruje nową klasę, która nie ma nazwy i implementujeList
, aw czasie wykonywania tworzy nowy obiekt nowo zadeklarowanej klasy.Stworzyliśmy Sojuz-to uproszczenie 1 problem: jak przekonwertować
X
doY
(na przykładString
doInteger
). Konstruowanie przedmiotu jest również rodzaj konwersji tak, że ma funkcję prostego skonstruowaniaMap
,List
,Set
:Sprawdź to - ma wiele innych przydatnych funkcji
źródło