Title: Arrays
1Arrays
- Chapter 8
- Spring 2006
- CS 101
- Aaron Bloomfield
2Background
- Programmer 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
- The Vector class is an example of a collection
class - Consider arrays first
3Example
- Definitions
- char c
- int value new int10
- 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
4An array example
int v new int10 int i 7 int j 2 int
k 4 v0 1 vi 5 vj vi
3 vj1 vi v0 vvj
12 System.out.println(v2) vk
stdin.nextInt()
int v new int10 int i 7 int j 2 int
k 4 v0 1 vi 5 vj vi
3 vj1 vi v0 vvj
12 System.out.println(v2) vk
stdin.nextInt()
int v new int10 int i 7 int j 2 int
k 4 v0 1 vi 5 vj vi
3 vj1 vi v0 vvj
12 System.out.println(v2) vk
stdin.nextInt()
int v new int10 int i 7 int j 2 int
k 4 v0 1 vi 5 vj vi
3 vj1 vi v0 vvj
12 System.out.println(v2) vk
stdin.nextInt()
int v new int10 int i 7 int j 2 int
k 4 v0 1 vi 5 vj vi
3 vj1 vi v0 vvj
12 System.out.println(v2) vk
stdin.nextInt()
int v new int10 int i 7 int j 2 int
k 4 v0 1 vi 5 vj vi
3 vj1 vi v0 vvj
12 System.out.println(v2) vk
stdin.nextInt()
int v new int10 int i 7 int j 2 int
k 4 v0 1 vi 5 vj vi
3 vj1 vi v0 vvj
12 System.out.println(v2) vk
stdin.nextInt()
int v new int10 int i 7 int j 2 int
k 4 v0 1 vi 5 vj vi
3 vj1 vi v0 vvj
12 System.out.println(v2) vk
stdin.nextInt()
int v new int10 int i 7 int j 2 int
k 4 v0 1 vi 5 vj vi
3 vj1 vi v0 vvj
12 System.out.println(v2) vk
stdin.nextInt()
8 is displayed
Suppose 3 is extracted
5Array variable definition styles
int a int a
6Array variable definition styles
7Where weve seen arrays
- public static void main (String args)
- Thus, the main() method takes in a String array
as the parameter - Note that you can also define it as
- public static void main (String args)
- or
- public static void main (String foobar)
8Basic terminology
- List is composed of elements
- Elements in a list have a common name
- Example a3 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
9Java array features
- Subscripts are denoted as expressions within
brackets - Base (element) type can be any type
- Size of array can be specified at run time
- This is different that pure C! (for the most
part, at least) - 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 - Array is an object
- Has features common to all other objects
- More on this later
10Consider
- Segment
- int b new int100
- b-1 0
- b100 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
11Consider
- Point p new Point3
- p0 new Point(0, 0)
- p1 new Point(1, 1)
- p2 new Point(2, 2)
- p0.setX(1)
- p1.setY(p2.getY())
- Point vertex new Point(4,4)
- p1 p0
- p2 vertex
- Point p new Point3
- p0 new Point(0, 0)
- p1 new Point(1, 1)
- p2 new Point(2, 2)
- p0.setX(1)
- p1.setY(p2.getY())
- Point vertex new Point(4,4)
- p1 p0
- p2 vertex
12New 2005 demotivatiors!
13Explicit initialization
ElementType
id
exp
,
exp
,
...
exp
0
1
-1
n
14Explicit initialization
- Example
- String puppy pika, mila, arlo,
nikki - int unit 1
- Equivalent to
- String puppy new String4
- puppy0 pika" puppy1 mila"
- puppy2 arlo" puppy3 nikki"
- int unit new int1
- unit0 1
15Array members
- Member length
- Size of the array
- for (int i 0 i lt puppy.length i)
- System.out.println(puppyi)
-
16Review of arrays
- Creating an array
- int foo new int10
- Accessing an array
- foo3 7
- System.out.print (foo1)
- Creating an array
- String bar new String10
- Accessing an array
- bar3 qux
- System.out.println (bar1)
17How Java represents arrays
- Consider
- int a 1, 2, 3, 4, 5
a
18More about how Java represents Arrays
- Consider
- int a
- int b null
- int c new int5
- int d 1, 2, 3, 4, 5
- a c
- d c
- int a
- int b null
- int c new int5
- int d 1, 2, 3, 4, 5
- a c
- d c
-
19What do these pictures mean?
- Light beer
- Dandy lions
- Assaulted peanut
- Eggplant
- Dr. Pepper
- Pool table
- Tap dancers
- Card shark
- King of pop
- I Pod
- Gator aide
- Knight mare
- Hole milk
20ArrayTools.java outline
- public class ArrayTools
- // class constant
- private static final int MAX_LIST_SIZE 1000
- // sequentialSearch() examine unsorted list
for key - public static int sequentialSearch(int
data, int key) ... - // putList () prints list to screen
- public static void putList(int data) ...
- // getList() extract and return up to
MAX_LIST_SIZE values - public static int getList() ...
- // reverse() reverses the order of the element
values - public static void reverse(int list) ...
- // binarySearch() examine sorted list for a
key
21ArrayTools.java method putList()
- To print the array
- public static void putList(int data)
- for (int i 0 i lt data.length i)
- System.out.println(datai)
-
-
- Consider
- int score 6, 9, 82, 11, 29, 85, 11, 28, 91
- putList(score)
22ArrayTools.java method getList()
- public static int getList()
- Scanner stdin new Scanner (System.in)
- int buffer new intMAX_LIST_SIZE
- int listSize 0
- for (int i 0 (i lt MAX_LIST_SIZE)
- stdin.hasNext() i)
- bufferi stdin.nextInt()
- listSize
-
- int data new intlistSize
- for (int i 0 i lt listSize i)
- datai bufferi
-
- return data
-
23ArrayTools.java method reverse()
- public static void reverse(int data)
- int clone data.clone()
- for ( int i 0 i lt clone.length i )
- datai cloneclone.length-1-i
-
-
- Consider
- int foo 1, 2, 3, 4, 5
- reverse (foo)
- putList (foo)