Bu makalemizde Java’da Foreach yapısının nasıl olduğunu inceleyeceği.z.
Bazı makalelerimde olduğu gibi .Net ile Java’yı bu makalele de karşılaştırarak ilerleyeceğiz.
Öncelikle Java’da Foreach isminde bir deyimin olmadığını belirtelim. Fakat foreach mantığıyla çalışan yapılar kurabiliriz.
Java’daki yazımına geçmeden önce foreach’in C#’taki yapısını kısaca hatırlayalım.
Foreach, basitçe bir listenin (ya da dizinin) elemanlarıyla bulunduğu sıraya göre işlem yapan döngüdür. Bir örnekle inceleyelim.
List<int> sayilar = new List<int> { 1, 2, 3, 4, 5 };
foreach (int sayi in sayilar)
{
MessageBox.Show(sayi.ToString());
}
|
Örneğimizde sayilar isminde int listemiz var. Foreach ile sayilar’in elemanlarını tek tek sayi değişkenine atıp işlem yapıyoruz.
Foreach’in C# ile bir diğer kullanım şekli de IEnumerator iledir.
List<int> sayilar = new List<int> { 1, 2, 3, 4, 5 };
IEnumerator<int> enumerator = sayilar.GetEnumerator();
while (enumerator.MoveNext())
{
int i = enumerator.Current;
MessageBox.Show(i.ToString());
}
|
Bu örneğimizde sayılar listemiza (koleksiyonumuza) IEnumerator’a aktarabilmek için GetEnumerator methodunu kullanıyoruz.
enumerator.MoveNext() ile koleksiyonumuzda tek tek ilerliyoruz. Her ilerlemede koleksiyonumuzun bulunduğu elemanı almak için Current propertysi kullanılmaktadır.
Şimdi bu iki örneğin Java’daki karşılıklarını inceleyelim.
public static void main(String[] args) {
List<Integer> sayilar = new ArrayList<Integer>();
sayilar.add(1);
sayilar.add(2);
sayilar.add(3);
sayilar.add(4);
sayilar.add(5);
//
for(int i : sayilar){
System.out.println(i);
}
}
|
For döngüsünde sayilar listemizin tüm elemanlarını tek tek i değişkenine alıp işlem yapıyoruz. İlk örnekteki foreach döngüsüyle benzer çalışmaktadır.
Şimdi ikinci örneğimizi Java’ya dönüştürelim.
public static void main(String[] args) {
List<Integer> sayilar = new ArrayList<Integer>();
sayilar.add(1);
sayilar.add(2);
sayilar.add(3);
sayilar.add(4);
sayilar.add(5);
//
for (Iterator<Integer> i = sayilar.iterator(); i.hasNext(); ){
System.out.println(i.next());
}
}
|
Bu örneğimizdeki Iterator ile C#’taki IEnumerator aynı işlemleri gerçekleştirmektedirler.
Yazılan bütün örneklerde ekran çıktısı olarak aşağıdaki çıktı alınacaktır.
1
2
3
4
5
|
Veysel Uğur KIZMAZ
Bilgisayar Mühendisi