Arraylist vs Vector
A tömblistát dinamikus tömbnek tekinthetjük, amelynek mérete nőhet. Emiatt a programozónak nem kell tudnia a tömblista méretét, amikor definiálja azt. A vektor egy tömbnek is tekinthető, amely mérete nőhet. A vektorok könnyen kioszthatók, és akkor használhatók, ha a tároló szükséges mérete nem ismert futásidőig.
Mi az a tömblista?
A tömblistát dinamikus tömbnek tekinthetjük, amelynek mérete nőhet. Ezért a tömblisták ideálisak olyan helyzetekben való használatra, amikor nem ismerjük a deklarációkor szükséges elemek méretét. A Java-ban a tömblisták csak objektumokat tartalmazhatnak, primitív típusokat közvetlenül nem (a primitív típusokat elhelyezheti egy objektumon belül, vagy használhatja a primitív típusok burkoló osztályait). Általában a tömblisták rendelkeznek beszúrási, törlési és keresési módszerekkel. Egy elem elérésének időbonyolultsága o(1), míg a beillesztés és törlés időbonyolultsága o(n). A Java-ban a tömblisták bejárhatók foreach ciklusok, iterátorok vagy egyszerűen az indexek használatával. A Java nyelven a tömblistákat az 1.2-es verziótól vezették be, és a Java Collections Framework része.
Mi az a vektor?
A vektor egy tömb is, amelynek mérete nőhet. A vektorok könnyen allokálhatók, és akkor használhatók, ha a futásidőig nem ismert a tároló szükséges mérete. A vektorok is csak objektumokat tartalmazhatnak, primitív típusokat nem. A vektorok szinkronizáltak, ezért biztonságosan használhatók többszálú környezetben. A vektorok metódusokkal rendelkeznek objektumok hozzáadására, objektumok törlésére és objektumok keresésére. Hasonlóan a java tömblistájához, a vektorok bejárhatók foreach ciklusok, iterátorok vagy egyszerűen az indexek használatával. Ami a Java-t illeti, a vektorokat a Java első verziója óta tartalmazza.
Mi a különbség az Arraylist és a Vector között?
Annak ellenére, hogy mind a tömblisták, mind a vektorok nagyon hasonlítanak a dinamikus tömbökhöz, amelyek mérete növekedhet, van néhány fontos különbség. A fő különbség a tömblisták és a vektorok között az, hogy a vektorok szinkronizáltak, míg a tömblisták nincsenek szinkronizálva. Ezért a tömblisták használata többszálú környezetben nem megfelelő, míg a vektorok biztonságosan használhatók többszálú környezetben (mivel szálbiztosak). De a vektorok szinkronizálása a teljesítmény csökkenését okozza. Ezért nem lenne jó ötlet vektorokat egyetlen szálas környezetben használni. Belsőleg mind a tömblisták, mind a vektorok tömböket használnak az objektumok tárolására. Ha az aktuális hely nem elegendő, a vektorok megduplázzák a belső tömb méretét, míg a tömblisták 50%-kal növelik a belső tömb méretét. De mind a tömblisták, mind a vektorok használatakor megfelelő kezdeti kapacitás megadásával elkerülhető a belső tömb felesleges átméretezése. Ha ismert az adatok növekedési üteme, a vektorok használata megfelelőbb lenne, mivel a vektorok növekményes értéke meghatározható.