Тоологч ба давтагч хоёрын ялгаа

Тоологч ба давтагч хоёрын ялгаа
Тоологч ба давтагч хоёрын ялгаа

Видео: Тоологч ба давтагч хоёрын ялгаа

Видео: Тоологч ба давтагч хоёрын ялгаа
Видео: 1-10 хүртэлх цифр бичих аргачлал, өгсөж ба уруудуулж тоолох 2024, Арванхоёрдугаар сар
Anonim

Тоолол ба Давтагч

Java-д цуглуулгын үүрэг гүйцэтгэдэг олон өгөгдлийн бүтэц байдаг, тухайлбал, Java цуглуулгын хүрээг (жишээ нь HashMap, HashSet, ArrayList, TreeSet, TreeMap, LinkedList, LinkedHashMap болон LinkedHashSet) хэрэгжүүлдэг Векторууд, Хэш хүснэгтүүд болон ангиуд. Java хэл дээрх объектуудын бие даасан элементүүдийг давтах олон арга байдаг. Java нь энэ ажлыг хөнгөвчлөх хоёр интерфейсээр хангадаг. Enumeration болон Iterator нь java.util багцаас олдсон хоёр интерфэйс бөгөөд дараалал эсвэл объектын багцаар тоолох функцээр хангадаг. Тоологчийг JDK 1-д нэвтрүүлсэн.0 болон JDK 1.2-д нэвтрүүлсэн давталт нь тоологчийн функцийг бараг давхцдаг (Цуглуулгын хүрээн дотор).

Тоолол гэж юу вэ?

Тооцоо нь JDK 1.0-д нэвтрүүлсэн Java хэл дээрх нийтийн интерфейс бөгөөд элементүүдийн дарааллаар тоолох боломжийг олгодог. Үүнийг java.util багцаас олж болно. Тооцооллын интерфэйсийг объект хэрэгжүүлэх үед тухайн объект нь дараалсан элементүүдийг үүсгэж болно. Тооллогын интерфейс нь хоёр аргатай. hasMoreElements() арга нь энэ тоололд илүү олон элемент агуулагдаж байгаа эсэхийг шалгах ба nextElement() нь дарааллын дараагийн элементийг буцаана (хэрэв ядаж нэг удаа явах юм бол). Өөрөөр хэлбэл, nextElement()-г дараалан дуудсанаар программист цувралын бие даасан элементүүдэд хандах боломжтой. Жишээлбэл, Тоологч ашиглан Vector v1 дээрх бүх элементүүдийг хэвлэхийн тулд дараах кодын хэсгийг ашиглаж болно.

Тооцоо e=v1.elements();

While(e.hasMoreLements()){

System.out.println(e.nextElement());

}

Тоологчийг SequenceInputStream объектуудын оролтын урсгалыг тодорхойлоход ашиглаж болно.

Итератор гэж юу вэ?

Iterator нь Java.util багц дахь нийтийн интерфэйс бөгөөд Цуглуулгын хүрээг хэрэгжүүлдэг цуглуулгын объектуудын элементүүдийг давтах боломжийг олгодог (ArrayList, LinkedList гэх мэт). Үүнийг JDK 1.2-д нэвтрүүлсэн бөгөөд Java Collections Framework доторх Тоологчийг сольсон. Давталт нь гурван аргатай. hasNext() арга нь цуглуулгад үлдсэн элементүүд байгаа эсэхийг шалгадаг ба next() арга нь цувралын дараагийн элементийг буцаана. Remove() аргыг үндсэн цуглуулгаас одоогийн элементийг устгахад ашиглаж болно. Жишээлбэл, Vector v1 дээрх бүх элементүүдийг давталт ашиглан хэвлэхийн тулд дараах кодын хэсгийг ашиглаж болно.

Давтагч i=v1.elements();

While(i.hasNext()){

System.out.println(e.next());

}

Тооцоо болон давтагч хоёрын ялгаа нь юу вэ?

Хэдийгээр Enumeration болон Iterator нь java.util багцаас олдсон хоёр интерфэйс бөгөөд цувралын элементүүдийг давтах/тоолох боломжийг олгодог боловч тэдгээр нь өөр өөр байдаг. Үнэн хэрэгтээ, Тооллогын дараа нэвтрүүлсэн Iterator нь Java цуглуулгын хүрээнд тооллогыг орлуулдаг. Тооллогоос ялгаатай нь давталт нь бүтэлгүйтлээс хамгаалагдсан байдаг. Энэ нь Iterator-ийг ашиглах үед нэгэн зэрэг өөрчлөлт оруулахыг (үндсэн цуглуулгад) зөвшөөрөхгүй гэсэн үг юм. Энэ нь нэгэн зэрэг өөрчлөлт оруулах эрсдэл үргэлж байдаг олон урсгалтай орчинд маш хэрэгтэй. Нэгэн зэрэг өөрчлөлт хийсэн тохиолдолд Iterator объект нь ConcurrentModificationException-г шидэх болно. Давталт нь Тоологчтой харьцуулахад богино аргын нэртэй байдаг. Цаашилбал, давталт нь давталтын явцад элементүүдийг устгах нэмэлт функцтэй (энэ нь Тоологч ашиглах боломжгүй). Тиймээс, цуглуулгаас элементүүдийг хасах шаардлагатай бол давтагч нь авч үзэх цорын ганц сонголт юм.

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