Sobes.tech
Junior — Middle

Коллекциялар колдонулуп жатканда, кайсы учурда өтүү тезирээк болот: ArrayList же LinkedList?

sobes.tech AI

AIден жооп

Java-da ArrayList we LinkedList kolleksiýalarynda elementleri gaýtalamak, iç gurluşlaryna görä, dürli netijelilik görkezýär.

  • ArrayList array-a esaslanýar, şonuň üçin indeks boýunça elemente giriş wagty O(1). Indeks bilen for döngüsü arkaly gaýtalamak örän çalt.
  • LinkedList iki taraply baglanyşykly sanaw bolup, indeks boýunça elemente giriş, sanawyň başyndan ýa-da ahyryndan geçmegi talap edýär, bu bolsa O(n) wagt alýar.

Şonuň üçin, ähli elementleri iterator ýa-da foreach arkaly gaýtalamak, iki kolleksiýada hem takmynan birmeňzeş, ýöne indeksler arkaly (meselem, get(i) bilen) gaýtalamak edilse, ArrayList hasam çalt bolar.

Mysal:

ArrayList<String> arrayList = new ArrayList<>();
LinkedList<String> linkedList = new LinkedList<>();
// sanawlary doldurmak

// ArrayList-de çalt gaýtalamak
for (int i = 0; i < arrayList.size(); i++) {
    String item = arrayList.get(i); // O(1)
}

// LinkedList-de yavaş gaýtalamak indeksler arkaly
for (int i = 0; i < linkedList.size(); i++) {
    String item = linkedList.get(i); // O(n)
}

// LinkedList üçin iterator ýa-da foreach ulanylmagy maslahat berilýär
for (String item : linkedList) {
    // elementiň işlenişi
}

Şeýlelikde, gaýtalamak ArrayList-de has çalt, aýratyn-da indeks boýunça giriş gerek bolsa.