ArrayList болон LinkedList хоёрын ялгаа

Агуулгын хүснэгт:

ArrayList болон LinkedList хоёрын ялгаа
ArrayList болон LinkedList хоёрын ялгаа

Видео: ArrayList болон LinkedList хоёрын ялгаа

Видео: ArrayList болон LinkedList хоёрын ялгаа
Видео: Больше, чем кофе: внутренняя работа интервью 2024, Арваннэгдүгээр
Anonim

Үндсэн ялгаа – ArrayList болон LinkedList

Цуглуулга нь өгөгдөл хадгалахад хэрэгтэй. Ердийн массивын хувьд массивын хэмжээ тогтмол байдаг. Заримдаа шаардлагатай бол ургах боломжтой массив үүсгэх шаардлагатай болдог. Java зэрэг програмчлалын хэл нь цуглуулгатай. Энэ нь олон ангиуд, интерфейс бүхий хүрээ юм. Энэ нь бүлэг элементийн савны үүрэг гүйцэтгэдэг. Цуглуулга нь элементүүдийн багцыг хадгалах, шинэчлэх, сэргээх боломжийг олгодог. Энэ нь жагсаалт, багц, мод, газрын зураг гэх мэт өгөгдлийн бүтэцтэй ажиллахад тусалдаг. Жагсаалт нь Collection framework-ийн интерфейс юм. ArrayList болон LinkedList нь цуглуулгын хүрээн дэх хоёр анги юм. Тэд цуглуулгын интерфейс болон Жагсаалтын интерфейсийг хэрэгжүүлдэг. Энэ нийтлэлд ArrayList болон LinkedList хоёрын ялгааг авч үзэх болно. ArrayList нь AbstractList-ийг өргөтгөж, өгөгдлийн элементүүдийг хадгалахын тулд динамик массивыг дотооддоо ашигладаг List интерфейсийг хэрэгжүүлдэг анги юм. LinkedList нь AbstractSequentialList-ийг өргөтгөж, List, Deque, Queue интерфэйсүүдийг хэрэгжүүлдэг анги бөгөөд өгөгдлийн элементүүдийг хадгалахын тулд давхар холбогдсон жагсаалтыг дотооддоо ашигладаг. Энэ бол ArrayList болон LinkedList хоёрын гол ялгаа юм.

ArrayList гэж юу вэ?

ArrayList анги нь динамик массив үүсгэхэд хэрэглэгддэг. Энгийн массиваас ялгаатай нь динамик массивын хэмжээ тогтмол байдаггүй. ArrayList анги ашиглан үүсгэсэн объект нь жагсаалтад олон тооны элементүүдийг хадгалах боломжтой. Хүчин чадал нь автоматаар нэмэгддэг тул програмист жагсаалтад элементүүдийг нэмэх боломжтой. ArrayList анги нь List интерфэйсийг хэрэгжүүлдэг AbstractList классыг өргөтгөдөг. Тиймээс List интерфейсийн аргуудыг ArrayList ашиглаж болно. Элементүүдэд хандахын тулд get() аргыг ашигладаг. Add() аргыг жагсаалтад элемент нэмэхэд ашиглаж болно. Remove() аргыг жагсаалтаас элементийг устгахад ашигладаг. Доорх хөтөлбөрийг үзнэ үү.

ArrayList ба LinkedList хоёрын ялгаа
ArrayList ба LinkedList хоёрын ялгаа
ArrayList ба LinkedList хоёрын ялгаа
ArrayList ба LinkedList хоёрын ялгаа

Зураг 01: Массив жагсаалтын жишээ

Дээрх программын дагуу ArrayList-ийн объект үүссэн. Нэмэх аргыг ашиглан элементүүдийг динамикаар нэмж болно. "A", "B", "C", "D", "E" элементүүдийг нэмэх аргыг ашиглан нэмнэ. Устгах аргыг жагсаалтаас элементийг устгахад ашигладаг. Устгах аргад 4-ийг шилжүүлэхэд 4-р индекс дэх "E" үсэг жагсаалтаас хасагдана. Жагсаалтыг for давталтаар давтах үед A, B, C, D үсэг хэвлэнэ.

LinkedList гэж юу вэ?

ArrayList-тэй адил LinkedList нь өгөгдлийн элементүүдийг динамикаар хадгалахад ашиглагддаг. LinkedList анги ашиглан үүсгэсэн объект нь жагсаалтад олон тооны элементүүдийг хадгалах боломжтой. Хүчин чадал нь автоматаар нэмэгддэг тул програмист жагсаалтад элементүүдийг нэмэх боломжтой. Энэ нь өгөгдлийг хадгалахын тулд давхар холбоос бүхий жагсаалтыг дотооддоо ашигладаг. Давхар холбоос бүхий жагсаалтад өгөгдөл нь зангилаа хэлбэрээр хадгалагддаг. Зангилаа бүр хоёр холбоосыг агуулна. Эхний холбоос нь өмнөх зангилаа руу чиглэнэ. Дараагийн холбоос нь дарааллын дараагийн зангилаа руу чиглэнэ.

LinkedList анги нь AbstractSequentialList классыг өргөтгөж, List интерфейсийг хэрэгжүүлдэг. Тиймээс List интерфейсийн аргуудыг LinkedList ашиглаж болно. Get() аргыг жагсаалтын элементүүдэд хандахад ашиглаж болно. Add() аргыг жагсаалтад элемент нэмэхэд ашиглаж болно. Remove() аргыг жагсаалтаас элементийг устгахад ашигладаг. Доорх хөтөлбөрийг үзнэ үү.

ArrayList ба LinkedList хоёрын гол ялгаа
ArrayList ба LinkedList хоёрын гол ялгаа
ArrayList ба LinkedList хоёрын гол ялгаа
ArrayList ба LinkedList хоёрын гол ялгаа

Зураг 02: LinkedList-тэй жишээ

Дээрх программын дагуу LinkedList-ийн объект үүссэн. Нэмэх аргыг ашиглан элементүүдийг динамикаар нэмж болно. "A", "B", "C", "D", "E" элементүүдийг нэмэх аргыг ашиглан нэмнэ. Устгах аргыг жагсаалтаас элементийг устгахад ашигладаг. Устгах арга руу 4-ийг шилжүүлэхэд 4-р индекс дэх "E" үсэг жагсаалтаас хасагдана. For давталт ашиглан давталт хийх үед A, B, C, D үсэг хэвлэнэ.

ArrayList болон LinkedList хоёрын ижил төстэй талууд юу вэ?

  • ArrayList болон LinkedList хоёулаа List интерфейсийг хэрэгжүүлдэг.
  • ArrayList болон LinkedList аль аль нь давхардсан элементүүдийг агуулж болно.
  • ArrayList болон LinkedList хоёулаа оруулах дарааллыг хадгалдаг.

ArrayList болон LinkedList хоёрын ялгаа нь юу вэ?

ArrayList vs LinkedList

ArrayList нь AbstractList-ийг өргөтгөж, өгөгдлийн элементүүдийг хадгалахын тулд динамик массивыг дотооддоо ашигладаг List интерфейсийг хэрэгжүүлдэг анги юм. LinkedList нь AbstractSequentialList-ийг өргөтгөж, List, Deque, Queue интерфэйсүүдийг хэрэгжүүлдэг анги бөгөөд өгөгдлийн элементүүдийг хадгалахын тулд давхар холбогдсон жагсаалтыг дотооддоо ашигладаг.
Элементүүдэд хандах
ArrayList-ийн элементүүдэд хандах нь LinkedList-ээс хурдан юм. LinkedList-ийн элементүүдэд хандах нь ArrayList-ээс удаан байна.
Элементүүдийг удирдах
ArrayList-ийн элементүүдийг удирдах нь LinkedList-ээс удаан байна. LinkedList-ийн элементүүдийг удирдах нь ArrayList-ээс хурдан юм.
Зан төлөв
ArrayList нь Жагсаалт хэлбэрээр ажилладаг. LinkedList нь жагсаалт болон дараалал хэлбэрээр ажилладаг.

Хураангуй – ArrayList vs LinkedList

Цуглуулгын хүрээ нь жагсаалт, мод, газрын зураг, багц зэрэг өгөгдлийн бүтэцтэй ажиллах боломжийг олгодог. Жагсаалт нь цуглуулгын хүрээний интерфейс юм. Энэ нийтлэлд ArrayList болон LinkedList хоёрын ялгааг авч үзсэн. ArrayList нь AbstractList-ийг өргөтгөж, өгөгдлийн элементүүдийг хадгалахын тулд динамик массивыг дотооддоо ашигладаг List интерфейсийг хэрэгжүүлдэг анги юм. LinkedList нь AbstractSequentialList-ийг өргөтгөж, List, Deque, Queue интерфэйсүүдийг хэрэгжүүлдэг анги бөгөөд өгөгдлийн элементүүдийг хадгалахын тулд давхар холбогдсон жагсаалтыг дотооддоо ашигладаг. Энэ бол ArrayList болон LinkedList хоёрын ялгаа юм.

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