ArrayList in Java (equivalent to vector in C++) having dynamic size. It can be shrinked or expanded based on size. ArrayList is a part of collection framework and is present in java.util package.
An ArrayList:
ArrayList <E> list = new ArrayList <> ();
E here represents an object datatype e.g. Integer. The Integer class wraps a value of the primitive type int in an object. An object of type Integer contains a single field whose type is int.
More about Integer Object: here
list
Custom ArrayList: A custom arraylist has attributes based on user requirements and can have more than one type of data. This data is provided by a custom inner class which is formed by combination of various primitive object datatypes.
Consider a case when we have to take input as N number of students and details are:
roll number, name, marks, phone number
A normal method using object arraylist would be:
// define 4 ArrayLists and save data accordingly in
// each of them.
// roll number arraylist
ArrayList<Integer> roll = new ArrayList<>();
// name arraylist
ArrayList<String> name = new ArrayList<>();
// marks arraylist
ArrayList<Integer> marks = new ArrayList<>();
// phone number arraylist
ArrayList<Long> phone = new ArrayList<>();
// and for n students
for(int i = 0; i < n; i++)
{
// add all the values to each arraylist
// each arraylist has primitive datatypes
roll.add(rollnum_i);
name.add(name_i);
marks.add(marks_i);
phone.add(phone_i);
}
Now using a custom Arraylist:
The custom ArrayList simply supports multiple data in the way as shown in this image.
custom
To construct Custom ArrayList
Build an ArrayList Object and place its type as a Class Data.
Define a class and put the required entities in the constructor.
Link those entities to global variables.
Data received from the ArrayList is of that class type which stores multiple data.
// Java program to illustrate customArraylist in Java
import java.util.ArrayList;
class CustomArrayList
{
// custom class which has data type
// class has defined the type of data ArrayList
// size of input 4
int n=4;
// the custom datatype class
class Data
{
// global variables of the class
int roll;
String name;
int marks;
long phone;
// constructor has type of data that is required
Data(int roll, String name, int marks, long phone)
{
// initialize the input variable from main
// function to the global variable of the class
this.roll = roll;
this.name = name;
this.marks = marks;
this.phone = phone;
}
}
public static void main(String args[])
{
// suppose the custom input data
int roll[] = {1, 2, 3, 4};
String name[] = {"Arnav", "Shubham", "Abhay", "Suresh"};
int marks[] = {100, 99, 93, 94};
long phone[] = {9865412378L, 9852222221L, 8854722221L,
8874125896L
};
// Create an object of the class
CustomArrayList custom = new CustomArrayList();
// and call the function to add the values to the arraylist
custom.addValues(roll, name, marks, phone);
}
public void addValues(int roll[], String name[], int marks[],
long phone[])
{
// local custom arraylist of data type
// Data having (int, String, int, long) type
// from the class
ArrayList<Data> list=new ArrayList<>();
for (int i = 0; i < n; i++)
{
// create an object and send values to the
// constructor to be saved in the Data class
list.add(new Data(roll[i], name[i], marks[i],
phone[i]));
}
// after adding values printing the values to test
// the custom arraylist
printValues(list);
}
public void printValues(ArrayList<Data> list)
{
// list- the custom arraylist is sent from
// previous function
for (int i = 0; i < n; i++)
{
// the data received from arraylist is of Data type
// which is custom (int, String, int, long)
// based on class Data
Data data = list.get(i);
// data variable of type Data has four primitive datatypes
// roll -int
// name- String
// marks- int
// phone- long
System.out.println(data.roll+" "+data.name+" "
+data.marks+" "+data.phone);
}
}
}
result:
1 Arnav 100 9865412378
2 Shubham 99 9852222221
3 Abhay 93 8854722221
4 Suresh 94 8874125896