JAVA Arrays

advertisement
JAVA
Arrays
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 ({ }).
5
Array Definitions
double[] array1;
array1
final int SIZE = 4;
int[] array2 = new int[SIZE];
array2
[0]
?
[1]
[2]
?
?
String[] array3 = { "Bashful", "Doc" };
array3
[0]
“Bashful”
[1]
“Doc”
[3]
?
6
Array Subscripts
String[] anArray = new String[2];
anArray[0] = "Grumpy";
anArray[1] = "Happy";
anArray
[0]
[1]
“Grumpy”
println(anArray[1]);
“Happy”
7
Working with Arrays
String[] anArray = new String[2];
anArray[0] = "Grumpy";
anArray[1] = "Happy";
anArray
[0]
[1]
“Grumpy”
“Happy”
for (int i = 0; i < anArray.length; i++) {
println(anArray[i]);
}
8
Example: Population by Country
String[] 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
Arrays as Parameters
public static int computeTotal(int[] values) {
int result = 0;
for (int i = 0; i < values.length; i++) {
result += values[i];
}
return result;
}
10
Reference Values as Parameters
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]);
}
11
Ref. Values as Parameters (corrected)
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]);
}
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 Search
Receive a non-null, sorted list of values and a target value.
2. If list is null
1.
Return -1.
a.
Set first = 0 and last = length of the list - 1.
4. Loop while first <= last
3.
Set middle to the integer quotient (first + last) / 2.
If value < list[middle] then
a.
b.
i.
else if value > list[middle] then
c.
i.
Set first = middle + 1;
else
d.
i.
5.
Set last = middle – 1;
Return middle;
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.
Download