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.