Санак жана Итератордун ортосундагы айырма

Санак жана Итератордун ортосундагы айырма
Санак жана Итератордун ортосундагы айырма

Video: Санак жана Итератордун ортосундагы айырма

Video: Санак жана Итератордун ортосундагы айырма
Video: Санамай | Кыргызча Балдар Ырлары | Цифры | Кыргызские детские песни | Замира Сатыбалдиева 2024, Июль
Anonim

Санап жана Итератор

Java'да коллекциялар катары иштеген көптөгөн маалымат структуралары бар, мисалы, Java Collections Framework'ду ишке ашырган Vectors, Hash таблицалары жана класстар (мисалы, HashMap, HashSet, ArrayList, TreeSet, TreeMap, LinkedList, LinkedHashMap жана LinkedHashSet). Javaдагы объекттердин айрым элементтерин кайталоонун көптөгөн жолдору бар. Java бул тапшырманы жеңилдетүү үчүн эки интерфейсти камсыз кылат. Санактоо жана Итератор - бул java.util пакетинде табылган эки интерфейс, алар элементтердин жыйындысы менен катарлар же объекттер аркылуу санап чыгууга мүмкүнчүлүк берет. Санакчы JDK 1ге киргизилген.0 жана JDK 1.2де киргизилген Итератор Санактоочунун функцияларын дээрлик кайталайт (Жыйнактар алкагында).

Санап деген эмне?

Санак – бул Java тилиндеги жалпыга ачык интерфейс, JDK 1.0 версиясында киргизилген, ал элементтердин ырааттуулугу аркылуу санап чыгуу мүмкүнчүлүгүн берет. Бул java.util пакетинин астында табылган. Эсептөө интерфейси объект тарабынан ишке ашырылганда, ал объект элементтердин ырааттуулугун түзө алат. Эсептөө интерфейсинин эки ыкмасы бар. hasMoreElements() методу бул тизмектин көбүрөөк элементтерди камтыганын текшерет жана nextElement() ырааттуулуктагы кийинки элементти кайтарат (эгерде жок дегенде дагы бир баруу керек болсо). Башка сөз менен айтканда, nextElement() ырааттуу чакыруу менен, программист катардагы айрым элементтерге кире алат. Мисалы, Enumerator аркылуу Vector v1деги бардык элементтерди басып чыгаруу үчүн төмөнкү код үзүндүсүн колдонсо болот.

Санап e=v1.elements();

While(e.hasMoreLements()){

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

}

Санагычты SequenceInputStream объекттерине киргизүү агымын аныктоо үчүн да колдонсо болот.

Итератор деген эмне?

Итератор – 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 пакетинде табылган, сериянын элементтери аркылуу итерацияга/саноого мүмкүндүк берген интерфейстердин экөөсү болсо да, алардын айырмачылыктары бар. Чындыгында, Санактоодон кийин киргизилген Итератор Java Collections алкагындагы Санакты алмаштырат. Санактоодон айырмаланып, Итератор кооптуу эмес. Бул Итератор колдонулганда, бир эле учурда өзгөртүүлөргө (негизги коллекцияга) жол берилбейт дегенди билдирет. Бул ар дайым бир убакта өзгөртүү коркунучу бар көп чөйрөлөрдө абдан пайдалуу. Бир убакта өзгөртүү болгон учурда, Iterator объекти ConcurrentModificationException ыргытат. Enumerator менен салыштырганда Iterator кыска ыкма аталыштарына ээ. Андан тышкары, итератор итерация учурунда элементтерди жок кылуучу кошумча функцияга ээ (бул Enumerator аркылуу мүмкүн эмес). Демек, коллекциядан элементтерди алып салуу керек болсо, Итератор каралышы мүмкүн болгон жалгыз вариант.

Сунушталууда: