daneshju69
چهارشنبه 25 بهمن 1391, 07:01 صبح
سلام خدمت همه ی دوستان برنامه نویس
مدتی(چند روزی) هست که با کلکسیون ها درگیرم خواستم ببینم کلکسیون ها چیه، چه کاربردی دارند چه لزومی داره از کلکسیون ها استفاده کرد همچنین Iterator چیه و چه کاربردی داره؟
در ضمن اگر منابع خوب و فارسی در این زمینه سراغ دارید معرفی کنید.
با تشکر
daneshju69
پنج شنبه 26 بهمن 1391, 21:52 عصر
این چند روزه در مورد جنریک ها چیزهای فهمیدم و تا حدودی به جواب سوالاتم رسیدم.
چند مثال می زنم که قدرت جنریک ها را در برنامه نویسی نشون میده(تقریبا جواب سوال ها هم هست):
مثال اول:
این برنامه حاوی سه متد سربارگزاری شده بنام printArray است که این متد ها عناصر آرایه های مربوط به خود را را چاپ می کنند:
public class OverloadedMethods
{
public static void main(String[] args)
{
Integer[] integerArray={1,2,3,4,5,6};
Double[] doubleArray={1.1,2.2,3.3,4.4,5.5,6.6,7.7};
Character[] characterArray={'j','a','v','a',' ','p','r','o','g','r','a','m'};
System.out.println("Array integerArray contains: ");
printArray(integerArray);
System.out.println("\nArray doubleArray contains: ");
printArray(doubleArray);
System.out.println("\nArray characterArray contains: ");
printArray(characterArray);
}//end main
private static void printArray(Character[] inputArray)
{
for (Character element:inputArray)
System.out.printf("%s ",element);
System.out.println();
}//end method printArray
private static void printArray(Double[] inputArray)
{
for (Double element:inputArray )
System.out.printf("%s ",element);
System.out.println();
}//end method printArray
private static void printArray(Integer[] inputArray)
{
for (Integer element:inputArray)
System.out.printf("%s ",element);
System.out.println();
}//end method printArray
}
برنامه زیر هم همان کار انجام می دهد ولی فقط با یک متد و آرایه های از نوع دیگر را هم چاپ می کند. (تعداد خطوط خیلی کمتر شده)
public class GenericMethodTest
{
public static void main(String[] args)
{
Integer[] integerArray={1,2,3,4,5,6};
Double[] doubleArray={1.1,2.2,3.3,4.4,5.5,6.6,7.7};
Character[] characterArray={'j','a','v','a',' ','p','r','o','g','r','a','m'};
System.out.println("Array integerArray contains: ");
printArray(integerArray);
System.out.println("\nArray doubleArray contains: ");
printArray(doubleArray);
System.out.println("\nArray characterArray contains: ");
printArray(characterArray);
} //end main
private static<T> void printArray(T[] inputArray)
{
for (T element:inputArray)
System.out.printf("%s ",element);
System.out.println();
} //end method printArray
} //end class GenericMethodTest
مثال دوم:
در این برنامه یک متد(با سه پارامتر) از نوع جنریک تعریف شده است که بزرگترین مقدار از هر نوع را بر می گرداند. که بدون جنریک باید به ازای هر نوع یک متد تعریف کرد.
public class MaximumTest
{
public static void main(String[] args)
{
System.out.printf("Maximum of %d, %d, %d is: %d \n\n",3,4,5,maximum(3,4,5));
System.out.printf("Maximum of %.1f, %.1f, %.1f is: %.1f\n\n",3.2,1.3,6.2,maximum(3.2,1.32,6.24));
System.out.printf("Maximum of %s, %s, %s is: %s ","pear","apple","orange",maximum("pear","apple","orange"));
}//end main
public static <T extends Comparable<T>>T maximum(T x,T y,T z)
{
T max=x;
if(y.compareTo(max)>0)
max=y;
if(z.compareTo(max)>0)
max=z;
return max;
}//end method maximum
}//end class Maximum
اگر برنامه ها نیازی به توضیح دارند اطلاع دهید تا توضیح بدهم
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.