Numaralandırma ve Yineleyici Arasındaki Fark

Numaralandırma ve Yineleyici Arasındaki Fark
Numaralandırma ve Yineleyici Arasındaki Fark

Video: Numaralandırma ve Yineleyici Arasındaki Fark

Video: Numaralandırma ve Yineleyici Arasındaki Fark
Video: Metafor Nedir? 2024, Temmuz
Anonim

Numaralandırma ve Yineleyici

Java'da Vectors, Hash tabloları ve Java Collections Framework'ü uygulayan sınıflar (yani HashMap, HashSet, ArrayList, TreeSet, TreeMap, LinkedList, LinkedHashMap ve LinkedHashSet) gibi koleksiyon görevi gören birçok veri yapısı vardır. Java'da nesnelerin tek tek öğelerini yinelemenin sayısız yolu vardır. Java, bu görevi kolaylaştırmak için iki arabirim sağlar. Numaralandırma ve Yineleyici, java.util paketinde bulunan ve diziler veya bir dizi öğe içeren nesneler arasında numaralandırma işlevi sağlayan arabirimlerden ikisidir. Numaralandırıcı JDK 1'de tanıtıldı. JDK 1.2'de tanıtılan 0 ve Yineleyici, Enumerator'ın (Koleksiyonlar Çerçevesi içinde) işlevselliğini sanal olarak çoğ altır.

Sayım nedir?

Numaralandırma, JDK 1.0'da tanıtılan ve öğe dizileri aracılığıyla numaralandırma yeteneği sağlayan Java'da genel bir arabirimdir. Java.util paketinin altında bulunur. Numaralandırma arabirimi bir nesne tarafından uygulandığında, bu nesne bir dizi öğe oluşturabilir. Numaralandırma arabiriminin iki yöntemi vardır. hasMoreElements() yöntemi, bu numaralandırmanın daha fazla öğe içerip içermediğini test eder ve nextElement(), dizideki bir sonraki öğeyi döndürür (en az bir tane daha varsa). Başka bir deyişle, programcı art arda nextElement() öğesini çağırarak dizideki bireysel öğelere erişebilir. Örneğin, Numaralandırıcı kullanarak Vector v1'deki tüm öğeleri yazdırmak için aşağıdaki kod parçacığı kullanılabilir.

Numaralandırma e=v1.elements();

While(e.hasMoreLements()){

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

}

Enumerator, SequenceInputStream nesnelerine giriş akışını tanımlamak için de kullanılabilir.

Yineleyici nedir?

Iterator, Collections çerçevesini (ArrayList, LinkedList vb. gibi) uygulayan koleksiyon nesnelerinin öğelerinin yinelenmesine olanak tanıyan Java.util paketindeki genel bir arabirimdir. Bu, JDK 1.2'de tanıtıldı ve Java Collections Framework içindeki Numaralandırıcının yerini aldı. Yineleyicinin üç yöntemi vardır. hasNext() yöntemi, koleksiyonda kalan öğeler olup olmadığını test eder ve next() yöntemi, serideki bir sonraki öğeyi döndürür. Remove() yöntemi, geçerli öğeyi temel alınan koleksiyondan kaldırmak için kullanılabilir. Örneğin, Vector v1'deki tüm öğeleri Yineleyici kullanarak yazdırmak için aşağıdaki kod parçacığı kullanılabilir.

Yineleyici i=v1.elements();

While(i.hasNext()){

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

}

Numaralandırma ve Yineleyici arasındaki fark nedir?

Enumeration ve Iterator, Java.util paketinde bulunan ve bir serinin öğeleri arasında yinelemeye/numaralandırmaya izin veren iki arabirim olsa da, aralarında farklılıklar vardır. Aslında Enumeration'dan sonra tanıtılan Iterator, Java Collections çerçevesinde Enumeration'ın yerini alıyor. Numaralandırmadan farklı olarak, Yineleyici hataya karşı güvenlidir. Bu, Yineleyici kullanıldığında eşzamanlı değişikliklere (temel koleksiyonda) izin verilmediği anlamına gelir. Bu, her zaman eşzamanlı değişiklik riskinin olduğu çok iş parçacıklı ortamlarda çok kullanışlıdır. Eşzamanlı bir değişiklik olması durumunda, Iterator nesnesi bir ConcurrentModificationException oluşturur. Yineleyici, Enumerator'a kıyasla daha kısa yöntem adlarına sahiptir. Ayrıca, yineleyici, yineleme sırasında öğeleri silme ek işlevine sahiptir (bu, Numaralandırıcı kullanılarak mümkün değildir). Bu nedenle, koleksiyondan öğeleri kaldırmaya ihtiyaç varsa, dikkate alınabilecek tek seçenek Yineleyicidir.

Önerilen: