search
Giriş
Merhabalar arkadaşlar, Sitemizi programlama ile ilgilenen bütün arkadaşlarımızın Türkçe içerik konusunda çektiği sıkıntılar düşünülerek soru/cevap şeklinde bir etkileşimde bulunabilmesi için kurduk. Umuyoruz hepimiz için güzel bir deneyim olur. Hasscript Ekibi
0 oy
194 gösterim
Java'da foreach ile bir dizinin içinde nasıl dönerim.

Normal for'dan ya da diğer dillerden bir farkı var mıdır?

Kendi yazdığım bir sınıfın üzerinde foreach ile dönebilir miyim?
Java kategorisinde 6.2k puan

1 cevap

0 oy

foreach: kelimeleri ikiye ayıralım for ve each. Normalde for döngüsü bir koşuk doğrultusunda işler ve koşul gerçekleştiği zaman biter.

Örnek verelim:

...
for(int i = 0 ; i < 10 ; i++)
  birseylerYap();
...

Burada i = 0 dan başlayarak i < 10 koşulu doğru olduğu sürece i++ yani i değerini bir arttır diye bir döngü kuruluyor. i < 10 koşulu artık geçerli olmadığı zaman döngü bitmiş olur.

Mesela:

for(;;)
  birseylerYap()

Bu döngü de geçerlidir, ama koşul olmadığı için bu döngü hiç bitmez. Normalde başlangıç ve sonu belli olmasına rağmen bu örnekde sonu başlangıcı olmadığı için sonsuza gider. Yani hiç bitmez.

Peki foreach nerede?

foreach başlangıcı ve sonunu bizim böyle açık açık vermeden gizliden vererek yaptığımız bir yaklaşım oluyor.

Yani:

List<String> stringList = new ArrayList<>();
...
for(String s : stringList)
  birseylerYap()
...

başlangıcı elimizdeki arrayliste ait ilk eleman bitişi ise son eleman oluyor ve her birisi için bir kez dönüyor. Şöyle bir örnek verebiliriz. Mesela fantazi olsun diye bir foreach döngüsü kuracaksınız ve 10 kez çalışmasını istiyorsunuz. Bir arraylist açıp içine 10 tane a harfini add metoduyla ekleyip sonra foreach ile dönseniz yine 10 kerelik bir döngü açmış olacaksınız. Hemen gerçekleştirelim

List<String> l = new ArrayList<>();
l.add("a");
l.add("a");
l.add("a");
l.add("a");
l.add("a");
l.add("a");
l.add("a");
l.add("a");
l.add("a");
l.add("a");
for(String string : l) 
  birseylerYap()

Örnek biraz gereksiz bir işlem yapmakta ama konuyu anlatmak için verdiğim bir örnek. Sonuç itibariyle elinizdeki listede kaç tane eleman varsa  o kadar tekrarda ve her dönüşte bir sonraki elemanı size verecek şekilde çalışır.

Bu işlemi yapabilmesi için de bazı gereksinimleri vardır. Yani başı ve sonunu biz açık bir şekilde değil gizli bir şekilde belirlediğimiz için bizim yazdığımız bir sınıfta hemen kullanamayacağız. Örneğin bir linkedlist örneği yazdık ve bu linkedlist içinde foreach ile dönmek istiyoruz. Bizim linkedlisti tanımayacaktır. Java özelinde birim sınıfımız Iterator arayüzünü (interface) gerçekleştirdiği zaman bu for döngüsünü kullanabilir durumda olacağız.

Bazı durumlarda kullanmak kolaylık sağlarken, kullanımda sınırlarının olduğunu unutmamak lazım.

Örneğin 10 elemanlık listede foreach ile dönerken kaçıncı elemanda olduğumuzu bilemeyiz, yani index bilgimiz yok.

Ya da elimize aldığımız değişkenin içindeki değeri değiştiremeyiz(listeye yansımaz)

 

 

 

6.2k puan

İlgili sorular

0 oy
0 cevap 118 gösterim
118 gösterim
Java'da bir şarta bağlı kod yazma işlemi hangi şekillerde yapılabilir? Örnekler verebilir misiniz?
16 Ekim 2020 Java kategorisinde kenan 6.2k puan sordu
0 oy
1 cevap 395 gösterim
395 gösterim
Spring^de hazır olarak gelen CrudRepository hibernate ile veri crud işlemlerini yapıyorum. Ancak standart methodların dışında, custom bir select yazmaya çalışırsak nasıl olur? public interface UserRepositoryCustom extends CrudRepository<User,Long>{ User findByLastName(String lastName); } yapsak yeterli olur mu?
16 Temmuz 2017 Java kategorisinde tolgacelik.art 2.0k puan sordu
0 oy
2 cevap 418 gösterim
418 gösterim
Hibernate'de entity üzerinden iki field ile nasıl composite key oluşturulur?
16 Temmuz 2017 Java kategorisinde tolgacelik.art 2.0k puan sordu
0 oy
1 cevap 203 gösterim
203 gösterim
Neden while döngüsü kullanmalıyım? Python kullanarak while döngüsünü nasıl oluştururum?
16 Ekim 2020 Python kategorisinde kenan 6.2k puan sordu
0 oy
1 cevap 230 gösterim