Ponieważ ArrayList implementuje interfejs RandomAcess, znajduje element w dowolnym indeksie w tym samym czasie. Czy używa tego samego interfejsu podczas przemierzania. A jeśli tak, to czy jest szybsze niż przechodzenie przez tablicę?

-1
Aniruddha Kumbhar 19 grudzień 2019, 17:30
3
Dlaczego tak myślisz? Tablica umożliwia również dostęp losowy (w rzeczywistości ArrayList wewnętrznie używa tablicy...).
 – 
Mark Rotteveel
19 grudzień 2019, 17:39

2 odpowiedzi

Czy używa tego samego interfejsu podczas przemierzania

O jakim interfejsie mówisz? List<T>? No tak. LinkedList<T> również implementuje List<T>, ale nie RandomAccess.

A jeśli tak, to jest szybsze niż przechodzenie przez tablicę

ArrayList używa tablicy pod maską, więc nie może być szybsza niż tablica.

2
Maurice Perry 19 grudzień 2019, 17:40

ArrayList zachowuje się jak tablica.

Zasadniczo jest to wrapper class dla tablicy, która pozwala na:

  1. Rozwijaj się dynamicznie
  2. Pozwól na zaznaczanie i usuwanie elementów.
  3. Uzyskaj dostęp do jego elementów tak jak do tablicy.
  4. Oraz inne dodatkowe funkcje, takie jak wyszukiwanie elementów.

Z wyjątkiem pozycji 3, wszystkie są zaimplementowane tak wydajnie, jak to tylko możliwe, ale nadal zwiększają koszty, tak jak by to było, gdybyś musiał zapewnić tę możliwość przy użyciu zwykłych tablic.

0
WJS 19 grudzień 2019, 17:41