Аррайлист ба Вектор хоёрын ялгаа

Аррайлист ба Вектор хоёрын ялгаа
Аррайлист ба Вектор хоёрын ялгаа

Видео: Аррайлист ба Вектор хоёрын ялгаа

Видео: Аррайлист ба Вектор хоёрын ялгаа
Видео: VPS | [Хиймэл оюуны шинжлэх ухаан] 2024, Арваннэгдүгээр
Anonim

Аррейлист ба Вектор

Массив жагсаалтыг динамик массив гэж харж болох бөгөөд хэмжээ нь өсөх боломжтой. Энэ шалтгааны улмаас программист массив жагсаалтыг тодорхойлохдоо түүний хэмжээг мэдэх шаардлагагүй болно. Векторыг хэмжээ нь өсөх боломжтой массив гэж үзэж болно. Векторуудыг хялбархан хуваарилж болох бөгөөд ажиллах хугацаа хүртэл хадгалах сангийн шаардлагатай хэмжээ тодорхойгүй үед ашиглах боломжтой.

Аррейлист гэж юу вэ?

Массив жагсаалтыг динамик массив гэж харж болох бөгөөд хэмжээ нь өсөх боломжтой. Иймд массив жагсаалтуудыг зарлах үед шаардлагатай элементүүдийн хэмжээг мэдэхгүй тохиолдолд ашиглахад тохиромжтой. Жава хэл дээр массив жагсаалтууд нь зөвхөн объектуудыг агуулж чаддаг бөгөөд тэдгээр нь команд төрлүүдийг шууд агуулж чаддаггүй (та команд төрлүүдийг объект дотор оруулах эсвэл анхдагч төрлүүдийн ороосон ангиллыг ашиглаж болно). Ерөнхийдөө массив жагсаалтад оруулах, устгах, хайх аргуудыг өгдөг. Элементэд хандах цагийн нарийн төвөгтэй байдал нь o(1), харин оруулах, устгах нь o(n) цаг хугацааны нарийн төвөгтэй байдаг. Жава хэл дээр массив жагсаалтуудыг foreach давталт, давталт эсвэл зүгээр л индекс ашиглан дамжуулж болно. Жава хэл дээр массив жагсаалтуудыг 1.2 хувилбараас нэвтрүүлсэн бөгөөд энэ нь Java цуглуулгын хүрээний нэг хэсэг юм.

Вектор гэж юу вэ?

Вектор нь бас томрох боломжтой массив юм. Векторуудыг хялбархан хуваарилж болох бөгөөд хадгалах хугацаа дуусах хүртэл шаардлагатай хадгалах хэмжээ тодорхойгүй үед ашиглаж болно. Векторууд нь зөвхөн объектуудыг агуулж болох ба энгийн төрлүүдийг агуулж чадахгүй. Векторууд синхрончлогдсон тул олон урсгалтай орчинд аюулгүй ашиглаж болно. Векторууд нь объект нэмэх, устгах, объект хайх аргуудаар хангагдсан байдаг. Java хэл дээрх arraylist-тэй адил векторуудыг foreach гогцоо, давталт эсвэл зүгээр л индекс ашиглан дамжуулж болно. Java-н тухайд гэвэл Java-н анхны хувилбараас хойш векторуудыг оруулсан болно.

Аррейлист ба Вектор хоёрын ялгаа юу вэ?

Хэдийгээр массивын жагсаалтууд болон векторууд нь хэмжээ нь өсөх боломжтой динамик массивуудтай маш төстэй боловч зарим чухал ялгаанууд байдаг. Массив жагсаалтууд болон векторуудын гол ялгаа нь векторууд синхрончлогдсон байхад массив жагсаалтууд синхрончлогдоогүй байдаг. Тиймээс олон урсгалтай орчинд массив жагсаалтуудыг ашиглах нь тохиромжгүй, харин векторуудыг олон урсгалтай орчинд аюулгүйгээр ашиглах боломжтой (учир нь тэдгээр нь урсгалтай байдаг). Гэхдээ вектор дахь синхрончлол нь гүйцэтгэлийн бууралтад хүргэдэг. Тиймээс нэг урсгалтай орчинд векторуудыг ашиглах нь тийм ч сайн санаа биш юм. Дотор нь массив жагсаалтууд болон векторууд хоёулаа объектуудыг барихын тулд массивуудыг ашигладаг. Одоогийн зай хангалтгүй үед векторууд дотоод массивынхаа хэмжээг хоёр дахин нэмэгдүүлэх бол массивын жагсаалт нь дотоод массивын хэмжээг 50%-иар нэмэгдүүлнэ. Гэхдээ массивын жагсаалт болон векторыг хоёуланг нь ашиглах үед тохирох анхны багтаамжийг өгснөөр дотоод массивын шаардлагагүй хэмжээг өөрчлөхөөс зайлсхийх боломжтой. Өгөгдлийн өсөлтийн хурд нь мэдэгдэж байгаа нөхцөлд векторуудын өсөлтийн утгыг тодорхойлох боломжтой тул вектор ашиглах нь илүү тохиромжтой.

Зөвлөмж болгож буй: