Java'da harici ve dahili bir yineleyici nedir?Harici Iterator ile Dahili Yineleyici
cevap
Kimin hakkında controls the iteration.
diğer ayrıntılar bu description buldum bu soruya What are the benefits of the Iterator interface in Java?
içindedir:
vs Dış iç yineleyiciler.
Harici Yineleyiciler - yineleme koleksiyon nesnesi tarafından kontrol edildiğinde, harici bir yineleyicimiz olduğunu söyleriz.
.net veya java gibi dillerde, harici yineleyiciler oluşturmak çok kolaydır. Klasik uygulamada harici bir yineleyici uygulanır. Aşağıdaki örnekte harici yineleyici kullanılır:
// using iterators for a clloection of String objects:
// using in a for loop
for (Iterator it = options.iterator(); it.hasNext();) {
String name = (String)it.next();
System.out.println(name);
}
// using in while loop
Iterator name = options.iterator();
while (name.hasNext()){
System.out.println(name.next());
}
// using in a for-each loop (syntax available from java 1.5 and above)
for (Object item : options)
System.out.println(((String)item));
İç yineleyicinızı - yineleyici onu kontrol Ne zaman Öte yandan bir iç yineleyici
sahip uygulama ve iç yineleyicinızı kullanarak gerçekten zor. Bir dahili yineleyici kullanıldığında, kodun çalıştırılacağı, toplanmış nesneye aktarıldığı anlamına gelir. için destek sunuyoruz dilde Örneğin bu iç yineleyicinızı çağırmak kolaydır:
collection do: [:each | each doSomething] (Smalltalk)
ana fikir koleksiyonuna yürütülecek kod geçmektir. Daha sonra koleksiyon, bileşenlerin her birinde doSomething yöntemini dahili olarak çağırır. C++ 'da doMethod yöntemini bir işaretçi olarak göndermek mümkündür. C#, .NET veya VB.NET'te yöntemi bir temsilci olarak göndermek mümkündür. Java'da Functor
tasarım deseni kullanılmalıdır. Ana fikir, sadece bir yöntemle bir temel Arayüz oluşturmaktır (doSomething). Daha sonra bu yöntem, arayüzü uygulayan bir sınıfta uygulanacak ve sınıf tekrarlanacak koleksiyona aktarılacaktır. Daha fazla ayrıntı için Functor
tasarım desenine bakın. Eğer üzerinde çalıştırmak için bir yönteme bir işlev nesnesi geçirdiğinizde
Dış Yineleyici
bunun üstesinden bir yineleyici ve adım olsun
, yani harici bir yineleyicifor (Iterator iter = var.iterator(); iter.hasNext();) {
Object obj = iter.next();
// Operate on obj
}
İç yineleyici
olduğunu bir liste, bu bir iç yineleyici olduğu
var.each(new Functor() {
public void operate(Object arg) {
arg *= 2;
}
});
- 1. `Cloned` yineleyici bağdaştırıcısı, Iterator <T>` ile çalışır?
- 2. Scala Map ile Yineleyici ve
- 3. String Iterator öğesini Char Pointer ile karşılaştırılıyor
- 4. PHP Lazy Load Iterator
- 5. iterator tarafından değiştir öğesi
- 6. Ruby Enumerator nesnesi, dahili bir yineleyici üzerinden dışarıdan nasıl yinelenir?
- 7. Java Iterator Concurrency
- 8. C++ içinde yineleyici
- 9. Java: TreeMap girişinden iterator?
- 10. List Iterator Kaldır()
- 11. Iterator bloğu, IL
- 12. iterator successor
- 13. Yineleyici için eşleşen kurucu yok
- 14. AnyIterator ve yükseltici yineleyici cephesi
- 15. Yineleyici nasıl kullanılır?
- 16. tür açıklamaları bir yineleyici
- 17. Neden productIterator türünü döndürür Iterator [Any]?
- 18. Rust, vektör bir yineleyici mi?
- 19. Yineleyici türüne nasıl bağlanır? Öğe?
- 20. 'PowerShell' dahili veya harici bir komut olarak tanınmadı
- 21. kullanma boost :: yineleyici
- 22. Sınıf Özelliği, Dahili ve yalnızca dahili olarak alınabilir, ancak yalnızca harici olarak alınabilir
- 23. Java8 dahili yineleme
- 24. Python yineleyici nesnesinin dizinini alın
- 25. C (kendi) yineleyici türü ++ (STL)
- 26. Özel yineleyici BOOST_FOREACH ile çalışmıyor mu?
- 27. openssl 'ml64' dahili veya harici bir komut olarak tanınmadı
- 28. C++ yineleyici problemleri
- 29. String Iterator değerleri ArrayAdapter'e nasıl eklenir?
- 30. Eclipse refactor Iterator/foreach ne zaman
Java 5 kullanmak için tercih edilen bir yol yana Bir harici yineleyiciler, her bir döngü için: * için (Object o: var) {// NOOP} * için olmalıdır, ancak sürüm kullanan açık yineleyici için sözdizimsel şekerdir. – Alex
@JohannZacharee, yineleyici üzerinde denetimimiz olmadığı için Dahili Yineleyici olarak düşünülen foreach döngüsü değil mi? – denis631
@ denis631 Evet, foreach döngüsünün bir dahili yineleyiciye benzediğini kabul ediyorum. Anlayışım, Java'nın bunları derleme zamanında harici bir yineleyiciye dönüştürdüğünden beri bunu benim örneğim olarak kullanmadım. Farklılıkları daha iyi açıklamak için işlevsel bir örnek seçtim. –