java arrays. objectives be able to declare and initialize arrays be able to conceptualize (draw) how...
TRANSCRIPT
JAVAArrays
Objectives• Be able to declare and initialize arrays• Be able to conceptualize (draw) how arrays are
represented in computer memory.• Be able to process arrays (especially using for loops)• Understand when to use an array
3
Representing Lists of Objects• Frequently, applications must store lists of objects of the
same type.• Variables represent one object at a time so a list would
require separate variables:String country1, country2, country3;int population1, population2, population3;
• We can represent lists of objects using arrays.
4
Array Definition Pattern
ElementType[] arrayName;
or
ElementType[] arrayName = new ElementType[length];
or
ElementType[] arrayName = arrayInitializer;
·ElementType is any type (including an array type);·arrayName is the handle for the array object being defined – if there is no assignment clause in the statement, the handle is set to null;
·length is an expression specifying the number of elements in the array;
·arrayInitializer is a list of literals of type ElementType, enclosed in curly braces ({ }).
ElementType[] arrayName;
or
ElementType[] arrayName = new ElementType[length];
or
ElementType[] arrayName = arrayInitializer;
·ElementType is any type (including an array type);·arrayName is the handle for the array object being defined – if there is no assignment clause in the statement, the handle is set to null;
·length is an expression specifying the number of elements in the array;
·arrayInitializer is a list of literals of type ElementType, enclosed in curly braces ({ }).
5
double[] array1;
final int SIZE = 4;int[] array2 = new int[SIZE];
String[] array3 = { "Bashful", "Doc" };
array2 [0] [1] [2] [3]
? ? ? ?
array1
[0] [1]array3
“Bashful” “Doc”
Array Definitions
6
String[] anArray = new String[2];anArray[0] = "Grumpy";anArray[1] = "Happy";
println(anArray[1]);
[0] [1]anArray
“Grumpy” “Happy”
Array Subscripts
7
String[] anArray = new String[2];anArray[0] = "Grumpy";anArray[1] = "Happy";
for (int i = 0; i < anArray.length; i++) { println(anArray[i]);}
[0] [1]anArray
“Grumpy” “Happy”
Working with Arrays
8
Example: Population by CountryString[] countries = { "Belize", "Costa Rica", "El Salvador", "Guatemala", "Honduras", "Nicaragua", "Panama" };
int[] populations = { 294385, 4133884, 6948073, 12728111, 7483763, 5675356, 3242173 };
for (int i = 0; i < countries.length; i++) { println(countries[i] + ": " +
populations[i]);}
9
public static int computeTotal(int[] values) { int result = 0; for (int i = 0; i < values.length; i++) { result += values[i]; } return result;}
Arrays as Parameters
10
public static void main(String[] args) { String[] sa = {"Grumpy", "Happy"}; changeStringArray(sa); System.out.println(sa[0] + ” ” + sa[1]);}public static void changeStringArray
(String[] stringArray) { sa[0] = "Dopey"; sa[1] = "Sleepy"; System.out.println(sa[0] + ” ” + sa[1]);}
Reference Values as Parameters
11
public static void main(String[] args) { String[] sa = {"Grumpy", "Happy"}; changeStringArray(sa); System.out.println(sa[0] + ” ” + sa[1]);}public static void changeStringArray
(String[] sA1) { sA1[0] = "Dopey"; sA1[1] = "Sleepy"; System.out.println(sA1[0] + ” ” + sA1[1]);}
Ref. Values as Parameters (corrected)
12
Exercises
Search
Linear Search:
1. Receive a non-null list of values and a target value.
2. Loop for each element in list
a. If value equals list[i] then
i. Return true
3. Return false.
Binary Search1. Receive a non-null, sorted list of values and a target
value.
2. If list is nulla. Return -1.
3. Set first = 0 and last = length of the list - 1.
4. Loop while first <= lasta. Set middle to the integer quotient (first + last) / 2.
b. If value < list[middle] theni. Set last = middle – 1;
c. else if value > list[middle] theni. Set first = middle + 1;
d. else i. Return middle;
5. Return -1.
15
Multi-Dimensional Data• Some data sets cannot be represented with single-
dimensional arrays.• Examples:
• Matrixes, sudoku puzzles, tictactoe games, chess, checkers, etc.• Spreadsheets are generally two dimensional.• Databases are generally X dimensional where X > 2.
16
Multi-Dimensional Arrays• Some data collections, like the Sudoku grid can be viewed as multi-dimensional data.• Declaring 2-D arrays:
type[][] identifier = arrayExpression;• Constructing 2-D arrays:
new type[totalRows][totalColumns]• Accessing 2-D array elements:
identifier[someRow][someColumn]• This can be generalized to more dimensions.