In Arraylist - we can store different data types.
In List
Arraylist - not type safety
List
Boxing and UnBoxing
Arraylist accept values as object. We can store any type of data such as string, integer, decimal etc. This is known as Boxing
To retrieve the vales from arraylist we have to specify the index.
and it will return that values as object.
we have to explcitly typecast that value from object to its original type.
This is known as Unboxing. While typecasting we need to know the type of the data to be converted into.
So in Arraylist - will face issues Like Boxing and unboxing
But in List (Generics) we can specify the type of data we are going to insert in to
List. So that we can avoid boxing and unboxing
No boxing and Unboxing so that generics are type safety .
Example
[CODE]
//Storing in ArrayList
//Explains Boxing and Unboxing Concept
Class Employee
{
String empId;
String empName;
};
Employee emp = new Employee("EMP001", "Viji");
ArrayList arr = new ArrayList();
arr.Add("Viji");
arr.Add(123);
arr.Add(45.123);
arr.Add(emp);
//This process is known as boxing
//To retrieve the vales from arraylist we have to specify the index.
//So it will return that values as object.
//we have to cast that value from object to its original type.
String name = (String)arr[0];
int num = (int)arr[1];
decimal dec = (decimal)arr[2];
Employee em = (Employee)arr[3];
//This process that is converting from object to its original type is known as unboxing
[/CODE]
//List
// We have to specify the type of data we are going to insert in to
//List. So that we can avoid boxing and unboxing
//Example
List
strLst.Add("Viji");//Here List accepting values as String only
strLst.Add("Raj");
List
intLst.Add(12);//Here List accepting values as int only
intLst.Add(34);
intLst.Add(56);
List
decLst.Add(2.5M);//Here List accepting values as deciaml only
decLst.Add(14.4587m);
Class Employee
{
String empId;
String empName;
};
List
empLst.Add(new Employee("1", "Viji"));//Here List accepting Employee Objects only
empLst.Add(new Employee("2", "Raj"));
//To get values from Generic List
String nme = strLst[0]; //No need of casting
int nm = intLst[0];
Decimal decVal = decLst[0];
Employee empVal = empLst[0];
No comments:
Post a Comment