Upload
wendi
View
42
Download
0
Embed Size (px)
DESCRIPTION
Arrays. Spring 2006 UVA - CS 101 Aaron Bloomfield Edited for WLCS by Paul Bui. Background. Programmers often need the ability to represent a group of values as a list List may be one-dimensional or multidimensional Java provides arrays and the collection classes. c. -. …. value. 0. - PowerPoint PPT Presentation
Citation preview
1
Arrays
Spring 2006UVA - CS 101Aaron BloomfieldEdited for WLCS by Paul Bui
2
Background Programmers often need the ability to represent a group of
values as a list List may be one-dimensional or multidimensional
Java provides arrays and the collection classes
3
Example Definitions
char[] c;int[] value = new int[10];
Causes Array object variable c is un-initialized Array object variable value references a new ten element
list of integers Each of the integers is default initialized to 0
value 0 0 0 0 0
-c
…
4
An array example
int[] v = new int[10];int i = 7;int j = 2;int k = 4;v[0] = 1;v[i] = 5;v[j] = v[i] + 3;v[j+1] = v[i] + v[0];v[v[j]] = 12;System.out.println(v[2]);v[k] = stdin.nextInt();
v 00 0 00 0 00 00
v[2]v[0] v[1] v[5]v[3] v[4] v[7]v[6] v[9]v[8]
int[] v = new int[10];int i = 7;int j = 2;int k = 4;v[0] = 1;v[i] = 5;v[j] = v[i] + 3;v[j+1] = v[i] + v[0];v[v[j]] = 12;System.out.println(v[2]);v[k] = stdin.nextInt();
v 01 0 00 0 00 00
v[2]v[0] v[1] v[5]v[3] v[4] v[7]v[6] v[9]v[8]
int[] v = new int[10];int i = 7;int j = 2;int k = 4;v[0] = 1;v[i] = 5;v[j] = v[i] + 3;v[j+1] = v[i] + v[0];v[v[j]] = 12;System.out.println(v[2]);v[k] = stdin.nextInt();
v 01 0 00 0 50 00
v[2]v[0] v[1] v[5]v[3] v[4] v[7]v[6] v[9]v[8]
int[] v = new int[10];int i = 7;int j = 2;int k = 4;v[0] = 1;v[i] = 5;v[j] = v[i] + 3;v[j+1] = v[i] + v[0];v[v[j]] = 12;System.out.println(v[2]);v[k] = stdin.nextInt();
v 81 0 00 0 50 00
v[2]v[0] v[1] v[5]v[3] v[4] v[7]v[6] v[9]v[8]
int[] v = new int[10];int i = 7;int j = 2;int k = 4;v[0] = 1;v[i] = 5;v[j] = v[i] + 3;v[j+1] = v[i] + v[0];v[v[j]] = 12;System.out.println(v[2]);v[k] = stdin.nextInt();
v 81 0 06 0 50 00
v[2]v[0] v[1] v[5]v[3] v[4] v[7]v[6] v[9]v[8]
int[] v = new int[10];int i = 7;int j = 2;int k = 4;v[0] = 1;v[i] = 5;v[j] = v[i] + 3;v[j+1] = v[i] + v[0];v[v[j]] = 12;System.out.println(v[2]);v[k] = stdin.nextInt();
v 81 0 06 0 50 012
v[2]v[0] v[1] v[5]v[3] v[4] v[7]v[6] v[9]v[8]
int[] v = new int[10];int i = 7;int j = 2;int k = 4;v[0] = 1;v[i] = 5;v[j] = v[i] + 3;v[j+1] = v[i] + v[0];v[v[j]] = 12;System.out.println(v[2]);v[k] = stdin.nextInt();
v 81 0 06 0 50 012
v[2]v[0] v[1] v[5]v[3] v[4] v[7]v[6] v[9]v[8]
8 is displayed
int[] v = new int[10];int i = 7;int j = 2;int k = 4;v[0] = 1;v[i] = 5;v[j] = v[i] + 3;v[j+1] = v[i] + v[0];v[v[j]] = 12;System.out.println(v[2]);v[k] = stdin.nextInt();
v 81 0 06 3 50 012
v[2]v[0] v[1] v[5]v[3] v[4] v[7]v[6] v[9]v[8]
Suppose 3 is extracted
int[] v = new int[10];int i = 7;int j = 2;int k = 4;v[0] = 1;v[i] = 5;v[j] = v[i] + 3;v[j+1] = v[i] + v[0];v[v[j]] = 12;System.out.println(v[2]);v[k] = stdin.nextInt();
5
Array variable definition styles Without initialization
Type ofvalues in
list
Name oflist
Bracketsindicate arrayvariable being
defined
ElementType [ ] id;
int [] a;int a[];
6
Array variable definition styles With initialization
ElementType[ ] id = new ElementType [n];
Nonnegative integer expression specifying thenumber of elements in the array
A new array of nelements
7
Basic terminology List is composed of elements
Elements in a list have a common name Example: a[3] = 5; The common name is ‘a’
The list as a whole is referenced through the common name
List elements are of the same type — the base type
Elements of a list are referenced by subscripting (indexing) the common name
8
Java array features Subscripts are denoted as expressions within brackets: [ ]
Base (element) type can be any type
Size of array must be specified
Index type is integer and the index range must be 0 ... n-1 Where n is the number of elements Just like Strings indexing!
Automatic bounds checking Ensures any reference to an array element is valid
Data field “.length” specifies the number of elements in the list
9
Consider Segment
int[] b = new int[100];b[-1] = 0;b[100] = 0;
Causes Array variable to reference a new list of 100 integers
Each element is initialized to 0 Two exceptions to be thrown
-1 is not a valid index – too small 100 is not a valid index – too large
IndexOutOfBoundsException
10
Consider
Point[] p = new Point[3];p[0] = new Point(0, 0);p[1] = new Point(1, 1);p[2] = new Point(2, 2);p[0].setX(1);p[1].setY(p[2].getY());Point vertex = new Point(4,4);p[1] = p[0];p[2] = vertex;
p
p[0] p[1] p[2]
null null null
Point: (0, 0)
p
p[0] p[1]
Point: (1, 1) Point: (2, 2)
p[2]
Point: (1, 0)
p
p[0] p[1]
Point: (1, 1) Point: (2, 2)
p[2]
Point: (1, 0)
p
p[0] p[1]
Point: (1, 2) Point: (2, 2)
p[2]
Point: (1, 0)
p
p[0] p[1]
Point: (1, 2) Point: (2, 2)
p[2]
vertex
Point: (4, 4)
Point: (1, 0)
p
p[0] p[1]
Point: (2, 2)
p[2]
vertex
Point: (4, 4)
Point: (1, 0)
p
p[0] p[1] p[2]
vertex
Point: (4, 4)
Point[] p = new Point[3];p[0] = new Point(0, 0);p[1] = new Point(1, 1);p[2] = new Point(2, 2);p[0].setX(1);p[1].setY(p[2].getY());Point vertex = new Point(4,4);p[1] = p[0];p[2] = vertex;
1111
New 2005 demotivatiors!New 2005 demotivatiors!
12
Explicit initialization Syntax
ElementType[] id = { exp0 , exp1 , ... expn-1 };
id references an array of n elements. id[0] hasvalue exp0, id[1] has value exp1, and so on.
Each expi is an expression thatevaluates to type ElementType
13
Explicit initialization Example
String[] puppy = { “pika”, “mila”, “arlo”, “nikki” };
int[] unit = { 1 };
Equivalent toString[] puppy = new String[4];puppy[0] = “pika"; puppy[1] = “mila";puppy[2] = “arlo"; puppy[3] = “nikki";
int[] unit = new int[1];unit[0] = 1;
14
Array members Member length
Size of the arrayfor (int i = 0; i < puppy.length; ++i) {
System.out.println(puppy[i]);}
15
Review of arrays Creating an array:
int[] foo = new int[10];
Accessing an array:foo[3] = 7;System.out.print (foo[1]);
Creating an array:String[] bar = new String[10];
Accessing an array:bar[3] = “qux”;System.out.println (bar[1]);
16
How Java represents arrays Consider
int[] a = { 1, 2, 3, 4, 5 };
a 1 2 3 4 5
+ …
Array
- length = 5
- data = 1 2 3 4 5
17
More about how Java represents Arrays Consider
int[] a;int[] b = null;int[] c = new int[5];int[] d = { 1, 2, 3,
4, 5 };a = c;d = c;
1 2 3 4 5
0 0 0 0 0
a -
b null
c
d
int[] a;int[] b = null;int[] c = new int[5];int[] d = { 1, 2, 3,
4, 5 };a = c;d = c;
1818
What do these pictures What do these pictures mean?mean?
Light beerLight beer Dandy lionsDandy lions Assaulted Assaulted
peanutpeanut EggplantEggplant Dr. PepperDr. Pepper Pool tablePool table Tap dancersTap dancers Card sharkCard shark King of popKing of pop I PodI Pod Gator aideGator aide Knight mareKnight mare Hole milkHole milk
19
Java Array Code Examples To print the array:
public void printArray(int[] data) {
for (int i = 0; i < data.length; ++i) {
System.out.println(data[i]);}
}
Considerint[] score = { 6, 9, 82, 11, 29, 85, 11, 28, 91 };printArray(score);
20
Java Array Code Examples Returns a reversed version of the int arraypublic int[] reverse(int[] data) {
int[] clone = data.clone();for ( int i = 0; i < clone.length; ++i ) {
clone[i] = data[data.length-1-i];}return clone;
}
Considerint[] foo = { 1, 2, 3, 4, 5 };printArray( reverse (foo));