Title: Generics and The ArrayList Class
1- Generics and The ArrayList Class
- Lecture 13
2Part 1
3The ArrayList Class
- ArrayList is a class in the standard Java
libraries. - Unlike arrays, which have a fixed length once
they have been created, an ArrayList is an object
that can grow and shrink while your program is
running. - In general, an ArrayList serves the same purpose
as an array, except that an ArrayList can change
length while the program is running.
4ArrayLists Disadvantages
- An ArrayList is less efficient than an array.
- It does not have the convenient square bracket
notation. - The base type of an ArrayList must be a class
type (or other reference type) it cannot be a
primitive type (int, double, or char).
5Using the ArrayList Class
- In order to make use of the ArrayList class, it
must first be imported from the package
java.util. - An ArrayList is created and named in the same
way as object of any class, except that you
specify the base type as follows - ArrayListltBaseTypegt aList new
ArrayListltBaseTypegt() - An initial capacity can be specified when
creating an ArrayList as well. - e.g. The following code creates an ArrayList
that stores objects of the base type String with
an initial capacity of 20 items. - ArrayListltStringgt list new ArrayListltStringgt(20)
6The ArrayList Methods
- The tools for manipulating arrays consist only
of the square brackets and the instance variable
length. - ArrayLists, however, come with a selection of
powerful methods that can do many of the things
for which code would have to be written in order
to do them using arrays.
7The ArrayList Methods
Example ArrayListltDoublegt list1 new
ArrayListltDoublegt(30) ArrayListltStringgt list2
new ArrayListltStringgt()
8The ArrayList Methods
Example ArrayListltStringgt list new
ArrayListltStringgt() list.add(Simab) list.add(
Shahid) list.add(0,Semester 081)
9The ArrayList Methods
Example ArrayListltStringgt list new
ArrayListltStringgt() int index 1
list.add(Hi) list.add(There) string S1
list.set(index, Hello) List.add(S1) String S2
list.get(index)
10Example 01
- ArrayListltintegergt list new ArrayListltintegergt()
- int index 2
- list.add(1) // will add at index 0
- list.add(2) // will add at index 1
- index 1
- integer i list.set(index, 7)
- System.out.println(i)
- Output
- 2
- The set() function of ArrayList class set the
index with the given value and returned the value
previously stored at that index
11Example 01
- ArrayListltintegergt list new ArrayListltintegergt()
- int index 2
- list.add(1) // will add at index 0
- list.add(2) // will add at index 1
- index 1
- integer i list.get(index)
- System.out.println(i)
- Output
- 2
- The get() function of ArrayList class returned
the returned the value stored at that index
12The ArrayList Methods
13The ArrayList Methods
14Example
- ArrayListltIntegergt list new ArrayListltIntegergt
(20) - list.add(1)
- list.add(2)
- list.add(3)
- int index 1
- list.remove(index)
- for(Integer i list)
- System.out.println(i " ")
- Output
- 1
- 3
- In this code the remove function has removed the
value stored at index 1.
15Example
- ArrayListltIntegergt list new ArrayListltIntegergt
(20) - list.add(1)
- list.add(2)
- list.add(3)
- int index 1
- Integer i list.remove(index)
-
- System.out.println(i " ")
- Output
- 2
16Example
- ArrayListltIntegergt list new ArrayListltIntegergt
(20) - list.add(1)
- list.add(2)
- list.add(3)
- list.clear()
- for(Integer i list)
- System.out.println(i " ")
- Output
- It will not print any thing because the clear()
will delete all the elements of the list.
17The ArrayList Methods
18Example
- ArrayListltIntegergt list new ArrayListltIntegergt
(20) - list.add(1)
- list.add(2)
- list.add(3)
- int index
- index list.indexOf(2) System.out.println(
Index of 2 is index) - Output
- Index of 2 is 1
19Example
- ArrayListltIntegergt list new ArrayListltIntegergt
(20) - list.add(4)
- list.add(2)
- list.add(3)
- list.add(4)
-
- int index
- index list.lastIndexOf(4)
System.out.println(Last Index of 4 is
index) - Output
- Index of 4 is 3
20The ArrayList Methods
21The ArrayList Methods
22The ArrayList Methods
23Why are Some Parameters of Type Base_Type and
Others of type Object
- When looking at the methods available in the
ArrayList class, there appears to be some
inconsistency. - In some cases, when a parameter is naturally an
object of the base type, the parameter type is
the base type. - However, in other cases, it is the type Object.
- This is because the ArrayList class implements a
number of interfaces, and inherits methods from
various classes. - These interfaces and classes specify that certain
parameters have type Object.
24For-each Loop for ArrayList Objects
- The ArrayList class is an example of a collection
class. - Starting with version 5.0, Java has added a new
kind of for loop called a for-each or enhanced
for loop. - This kind of loop has been designed to cycle
through all the elements in a collection (like an
ArrayList). - Syntax
- for (Array_Base_Type Variable
ArrayList_Object) - Statement
- Example
- ArrayListltIntegergt list new
ArrayListltIntegergt(10) - for (Integer element list)
- element 20
25Use trimToSize to Save Memory
- An ArrayList automatically increases its capacity
when needed. - However, the capacity may increase beyond what a
program requires. - In addition, although an ArrayList grows
automatically when needed, it does not shrink
automatically. - If an ArrayList has a large amount of excess
capacity, an invocation of the method trimToSize
will shrink the capacity of the ArrayList down to
the size needed.
26Example (ArrayList class)
- import java.util.
- class ArrayListDemo
- public static void main(String args)
- ArrayListltStringgt list new ArrayListltStringgt
(20) - list.add("AB") list.add("CD")
list.add("GH") - list.add("IJ") list.add("KL")
list.add("MN") - list.add("QR") list.add("ST")
list.add("WX") - list.add("YZ")
-
- // Print the elements of the ArrayList
- System.out.println("The following is the
initial ArrayList") - for(String s list)
- System.out.print(s " ")
-
- // Add elements to the ArrayList
- list.add(2 , "ef") list.add(7 , "op")
list.add(10 , "uv") - // Print the new ArrayList
- System.out.println(" ")
- System.out.println("The following is the new
ArrayList")
27Example (ArrayList class)
- // Print the element at position index1 in the
ArrayList - System.out.println(" ")
- int index111
- String element list.get(index1)
- System.out.println("The element at position
" " " index1 " " "is" " " element) - // Print the index of an element of the
ArrayList - System.out.println(" ")
- int index list.indexOf("CD")
- System.out.println("The element CD is at
position " " index) -
-
-
-
Output The following is the initial
ArrayList AB CD GH IJ KL MN QR ST WX YZ The
following is the new ArrayList AB CD ef GH IJ KL
MN op QR ST uv WX YZ The element at position
11 is WX The element CD is at position 1
28Parameterized Classes and Generics
- The class ArrayList is a parameterized class.
- It has a parameter, denoted by Base_Type, that
can be replaced by any reference type to obtain a
class for ArrayLists with the specified base
type. - Starting with version 5.0, Java allows class
definitions with parameters for types. - These classes that have type parameters are
called parameterized class or generic
definitions, or, simply, generics.