Download ArrayList Class

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Programming With Java
ICS201
Chapter 14
Generics and The
ArrayList Class
University Of Ha’il
1
Programming With Java
ICS201
Part 1
The ArrayList Class
University Of Ha’il
2
Programming With Java
ICS201
Lists
3
• list: an ordered sequence of elements, each
accessible by a 0-based index
– one of the most basic collections of data
Programming With Java
ICS201
The ArrayList class
4
• Class ArrayList<E> implements the notion of
a list
• Think of it as an auto-resizing array
• when you want to use ArrayList, remember to
import java.util.*;
Programming With Java
ICS201
ArrayList vs. Array
5
• Array
String[] names = new String[5];
names[0] = "Java";
String name = names[0];
• ArrayList
ArrayList<String> namesList =
new ArrayList<String>();
namesList.add("Java");
String name = namesList.get(0);
Programming With Java
ICS201
The ArrayList Class
o 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.
o In general, an ArrayList serves the same purpose as
an array, except that an ArrayList can change length
while the program is running.
University Of Ha’il
6
Programming With Java
ICS201
ArrayLists 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).
University Of Ha’il
7
Programming With Java
ICS201
Using the ArrayList Class
o In order to make use of the ArrayList class, it must first
be imported from the package java.util.
o An ArrayList is created and named in the same way as
object of any class, except that you specify the base type as
follows:
ArrayList<BaseType> aList = new ArrayList<BaseType>();
o 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.
ArrayList<String> list = new ArrayList<String>(20);
University Of Ha’il
8
Programming With Java
ICS201
Adding elements
• Elements are added dynamically to the list:
ArrayList<String> list = new ArrayList<String>();
System.out.println("list = " + list);
list.add("Red");
System.out.println("list = " + list);
list.add("Blue");
System.out.println("list = " + list);
list.add("Green");
System.out.println("list = " + list);
• Output:
list = []
list = [Red]
list = [Red, Blue]
list = [Red, Blue, Green]
9
Programming With Java
ICS201
Removing elements
• Elements can also be removed by index:
System.out.println("before remove list = " + list);
list.remove(0);
list.remove(1);
System.out.println("after remove list = " + list);
• Output:
before remove list = [Tool, U2, Red, Green]
after remove list = [U2, Green]
– Notice that as each element is removed, the others
shift downward in position to fill the hole.
– Therefore, the second remove gets rid of Red, not
U2.
index
0
index
0
value
U2
value Tool
10
11 1 2 2
3
U2
Red
Red
Green Green
Green
Programming With Java
ICS201
ArrayList methods
Method name
add(value)
adds the given value to the end of the list
add(index, value)
inserts the given value before the given index
clear()
removes all elements
contains(value)
returns true if the given element is in the list
get(index)
returns the value at the given index
indexOf(value)
remove(index)
returns the first index at which the given element
appears in the list (or -1 if not found)
returns the last index at which the given element
appears in the list (or -1 if not found)
removes value at given index, sliding others back
size()
returns the number of elements in the list
lastIndexOf(value)
11
Description
Programming With Java
ICS201
ArrayList and for loop
12
for (<type> <name> : <collection>) {
<statement(s)> ;
}
• This syntax can be used to examine an ArrayList:
int sum = 0;
for (String s : list) {
sum += s.length();
}
System.out.println("Total of lengths = " + sum);
Programming With Java
ICS201
The ArrayList Methods
Example:
ArrayList<Double> list1 = new ArrayList<Double>(10);
ArrayList<String> list2 = new ArrayList<String>();
University Of Ha’il
13
Programming With Java
ICS201
The ArrayList Methods
Example:
ArrayList<String> list = new ArrayList<String>();
int index = 2;
……
list.set(index, "Here");
String S = list.get(index);
University Of Ha’il
14
Programming With Java
ICS201
The ArrayList Methods
Example:
ArrayList<String> list = new ArrayList<String>();
list.add("Java");
list.add("Course");
list.add(0, "Semester 201101");
University Of Ha’il
15
Programming With Java
ICS201
The ArrayList Methods
University Of Ha’il
16
Programming With Java
ICS201
The ArrayList Methods
University Of Ha’il
17
Programming With Java
ICS201
The ArrayList Methods
University Of Ha’il
18
Programming With Java
ICS201
The ArrayList Methods
University Of Ha’il
19
Programming With Java
ICS201
The ArrayList Methods
University Of Ha’il
20
Programming With Java
ICS201
The ArrayList Methods
University Of Ha’il
21
Programming With Java
ICS201
Why are Some Parameters of Type Base_Type
and Others of type Object
o 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.
o 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.
University Of Ha’il
22
Programming With Java
ICS201
For-each Loop for ArrayList Objects
o The ArrayList class is an example of a collection class.
o 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:
ArrayList<Integer> list = new ArrayList<Integer>(10);
for (Integer element : list)
element = 20 ;
University Of Ha’il
23
Programming With Java
ICS201
Use trimToSize to Save Memory
o An ArrayList automatically increases its capacity when
needed.
 However, the capacity may increase beyond what a
program requires.
 In
addition,
automatically
although
when
an
needed,
ArrayList
it
does
not
grows
shrink
automatically.
o 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.
University Of Ha’il
24
Programming With Java
ICS201
Example (ArrayList class)
import java.util.*;
class ArrayListDemo {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String> (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:");
for(String s : list)
System.out.print(s +" ");
continued
University Of Ha’il
25
Programming With Java
ICS201
Example (ArrayList class)
// Print the element at position index1 in the ArrayList
System.out.println(" ");
int index1=11;
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 BC is at position 1
University Of Ha’il
26
Programming With Java
ICS201
Parameterized Classes and Generics
o The class ArrayList is a parameterized class.
o 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.
o 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.
University Of Ha’il
27