Különbség az Arraylist és a Vector

Anonim

Arraylist vs Vector

méretű méretet. méret. Emiatt a programozónak nem kell tudnia az arraylista méretét, amikor meghatározza. A vektor is olyan tömbként tekinthető meg, amely képes növekedni. A vektorok könnyen fel lehet osztani és felhasználhatóak, ha a tárolás szükséges mérete a futásidőig nem ismert.

Mi az arraylista?

Az angyalisták dinamikus tömbként tekinthetők meg, amely méretük növekedhet. Ezért az arraylisták ideálisak abban az esetben, ha nem ismerik a nyilatkozat idején szükséges elemek méretét. A Java-ban az arraylisták csak objektumokat tarthatnak, nem képesek primitív típusokat közvetlenül megtartani (az elsődleges típusokat egy objektumba helyezhetjük, vagy a primitív típusok csomagolási osztályait használhatjuk). Általában az arraylistáknak módszerei vannak a beillesztés, a törlés és a keresés végrehajtására. Az elemekhez való hozzáférés időbeni bonyolultsága o (1), míg a beillesztés és törlés idővel komplexitása o (n). A Java-ban a hurkolók átjárhatók foreach hurkok, iterátorok vagy egyszerűen az indexek használatával. A Java-ban az 1. verzióból 2-et vezettek be, és a Java Collections Framework része.

Mi a vektor?

A vektor is olyan tömb, amely képes növekedni. A vektorok könnyen hozzárendelhetők és használhatók, ha a tárolás szükséges mérete a futásidőig nem ismert. A vektorok csak objektumokat tarthatnak és nem tudnak primitív típusokat megtartani. A vektorok szinkronizáltak, ezért biztonságosan használhatók többszálas környezetben. A vektorok objektumok hozzáadásával, objektumok törlésével és keresőobjektumokkal rendelkeznek. A java-ban található arraylistekhez hasonlóan a vektorok átjárhatók foreach hurkok, iterátorok vagy egyszerűen az indexek használatával. A Java-ban a vektorok a Java első verziója óta szerepelnek.

Mi a különbség az Arraylist és a Vector között?

Habár mind az arraylisták, mind a vektorok nagyon hasonlítanak a dinamikus tömbökhöz, amelyek képesek növekedni a méretükben, vannak jelentős különbségeik. Az elválasztók és a vektorok közötti fő különbség az, hogy a vektorok szinkronizálódnak, míg a rosták nem szinkronizáltak. Ezért a többnyelvű környezetben lévő arraylisták használata nem megfelelő, míg a vektorok biztonságosan használhatók többszálas környezetben (mivel menetbiztosak). De a vektorok szinkronizálása a teljesítmény csökkenését okozza. Ezért nem lenne jó ötlet vektorokat használni egyetlen menetes környezetben. Belsőleg, mindkét modul és vektor arra használ tömböket, hogy objektumokat tartsanak. Ha az aktuális tér nem elegendő, akkor a vektorok megduplázzák a belső tömb méretét, míg a tömbök 50% -kal növelik a belső tömb méretét.De ha mind az amplitúdókat, mind a vektorokat használjuk, megfelelő kezdeti kapacitás biztosításával elkerülhetjük a belső tömb szükségtelen átméretezését. Abban a helyzetben, hogy az adatok növekedési ütemének ismerete, a vektorok használata alkalmasabb, mivel a vektorok inkrementális értéke meghatározható.