Arrays - PowerPoint PPT Presentation

1 / 51
About This Presentation
Title:

Arrays

Description:

1. Arrays. Arrays are objects that help us organize large amounts of information ... music.addCD ('Come On Over', 'Shania Twain', 14.95, 16) ... – PowerPoint PPT presentation

Number of Views:1269
Avg rating:3.0/5.0
Slides: 52
Provided by: john1376
Category:
Tags: arrays | shania | twain

less

Transcript and Presenter's Notes

Title: Arrays


1
Arrays
  • Arrays are objects that help us organize large
    amounts of information
  • Chapter 6 focuses on
  • array declaration and use
  • passing arrays and array elements as parameters
  • arrays of objects
  • sorting elements in an array
  • multidimensional arrays
  • the ArrayList class

2
Arrays
  • An array is an ordered list of values

0 1 2 3 4 5 6 7 8
9
An array of size N is indexed from zero to N-1
This array holds 10 values that are indexed from
0 to 9
3
Arrays
  • A particular value in an array is referenced
    using the array name followed by the index in
    brackets
  • For example, the expression
  • scores2
  • refers to the value 94 (the 3rd value in the
    array)
  • That expression represents a place to store a
    single integer and can be used wherever an
    integer variable can be used

4
Arrays
  • For example, an array element can be assigned a
    value, printed, or used in a calculation
  • scores2 89
  • scoresfirst scoresfirst 2
  • mean (scores0 scores1)/2
  • System.out.println ("Top " scores5)

5
Arrays
  • The values held in an array are called array
    elements
  • An array stores multiple values of the same type
    (the element type)
  • The element type can be a primitive type or an
    object reference
  • Therefore, we can create an array of integers, or
    an array of characters, or an array of String
    objects, etc.
  • In Java, the array itself is an object
  • Therefore the name of the array is a object
    reference variable, and the array itself must be
    instantiated

6
Declaring Arrays
  • The scores array could be declared as follows
  • int scores new int10
  • The type of the variable scores is int (an
    array of integers)
  • Note that the type of the array does not specify
    its size, but each object of that type has a
    specific size
  • The reference variable scores is set to a new
    array object that can hold 10 integers
  • See BasicArray.java (page 322)

7
BasicArray.java
  • public class BasicArray
  • final static int LIMIT 15
  • final static int MULTIPLE 10
  • public static void main (String args)
  • int list new intLIMIT
  • for (int index 0 index
  • listindex index MULTIPLE
  • list5 999 // change one array value
  • for (int index 0 index
  • System.out.print (listindex " ")
  • System.out.println ()

8
Declaring Arrays
  • Some examples of array declarations
  • float prices new float500
  • boolean flags
  • flags new boolean20
  • char codes new char1750

9
Bounds Checking
  • Once an array is created, it has a fixed size
  • An index used in an array reference must specify
    a valid element
  • That is, the index value must be in bounds (0 to
    N-1)
  • The Java interpreter throws an ArrayIndexOutOfBoun
    dsException if an array index is out of bounds
  • This is called automatic bounds checking

10
Bounds Checking
  • For example, if the array codes can hold 100
    values, it can be indexed using only the numbers
    0 to 99
  • If count has the value 100, then the following
    reference will cause an exception to be thrown
  • System.out.println (codescount)
  • Its common to introduce off-by-one errors when
    using arrays

for (int index0 index index) codesindex index50 epsilon
11
Bounds Checking
  • Each array object has a public constant called
    length that stores the size of the array
  • It is referenced using the array name
  • scores.length
  • Note that length holds the number of elements,
    not the largest index
  • See ReverseOrder.java (page 324)
  • See LetterCount.java (page 326)

12
ReverseOrder.java
  • import cs1.Keyboard
  • public class ReverseOrder
  • public static void main (String args)
  • double numbers new double10
  • System.out.println ("The size of the array
    " numbers.length)
  • for (int index 0 index index)
  • System.out.print ("Enter number "
    (index1) " ")
  • numbersindex Keyboard.readDouble()
  • System.out.println ("The numbers in reverse
    order")
  • for (int index numbers.length-1 index
    0 index--)
  • System.out.print (numbersindex "
    ")
  • System.out.println ()

13
LetterCount.java
  • import cs1.Keyboard
  • public class LetterCount
  • public static void main (String args)
  • final int NUMCHARS 26
  • int upper new intNUMCHARS
  • int lower new intNUMCHARS
  • char current // the current character being
    processed
  • int other 0 // counter for non-alphabetics
  • System.out.println ("Enter a sentence")
  • String line Keyboard.readString()
  • for (int ch 0 ch
  • current line.charAt(ch)
  • if (current 'A' current uppercurrent-'A'
  • else if (current 'a' current lowercurrent-'a'
  • else other // Print the
    results
  • System.out.println ()
  • for (int letter0 letter letter)
  • System.out.print ( (char) (letter 'A') )
  • System.out.print (" " upperletter)

14
Alternate Array Syntax
  • The brackets of the array type can be associated
    with the element type or with the name of the
    array
  • Therefore the following declarations are
    equivalent
  • float prices
  • float prices
  • The first format generally is more readable

15
Initializer Lists
  • An initializer list can be used to instantiate
    and initialize an array in one step
  • The values are delimited by braces and separated
    by commas
  • Examples
  • int units 147, 323, 89, 933, 540,
  • 269, 97, 114, 298, 476
  • char letterGrades 'A', 'B', 'C', 'D', F'

16
Initializer Lists
  • Note that when an initializer list is used
  • the new operator is not used
  • no size value is specified
  • The size of the array is determined by the number
    of items in the initializer list
  • An initializer list can only be used only in the
    array declaration
  • See Primes.java (page 330)

17
Primes.java Author Lewis/Loftus
  • public class Primes
  • public static void main (String args)
  • int primeNums 2, 3, 5, 7, 11, 13, 17,
    19
  • System.out.println ("Array length "
    primeNums.length)
  • System.out.println ("The first few prime
    numbers are")
  • for (int scan 0 scan scan)
  • System.out.print (primeNumsscan "
    ")
  • System.out.println ()

18
Arrays as Parameters
  • An entire array can be passed as a parameter to a
    method
  • Like any other object, the reference to the array
    is passed, making the formal and actual
    parameters aliases of each other
  • Changing an array element within the method
    changes the original
  • An array element can be passed to a method as
    well, and follows the parameter passing rules of
    that element's type

19
Arrays of Objects
  • The elements of an array can be object references
  • The following declaration reserves space to store
    25 references to String objects
  • String words new String25
  • It does NOT create the String objects themselves
  • Each object stored in an array must be
    instantiated separately
  • See GradeRange.java (page 332)

20
GradeRange.java Author Lewis/Loftus
  • public class GradeRange
  • public static void main (String args)
  • String grades "A", "A-", "B", "B",
    "B-", "C", "C", "C-",
  • "D", "D", "D-", "F"
  • int cutoff 95, 90, 87, 83, 80, 77, 73, 70,
    67, 63, 60, 0
  • for (int level 0 level level)
  • System.out.println (gradeslevel "\t"
    cutofflevel)

21
Command-Line Arguments
  • The signature of the main method indicates that
    it takes an array of String objects as a
    parameter
  • These values come from command-line arguments
    that are provided when the interpreter is invoked
  • For example, the following invocation of the
    interpreter passes an array of three String
    objects into main
  • java StateEval pennsylvania texas arizona
  • These strings are stored at indexes 0-2 of the
    parameter
  • See NameTag.java (page 334)

22
NameTag.java Author Lewis/Loftus
  • public class NameTag
  • public static void main (String args)
  • System.out.println ()
  • System.out.println (" " args0)
  • System.out.println ("My name is "
    args1)
  • System.out.println ()

23
Arrays of Objects
  • Objects can have arrays as instance variables
  • Many useful structures can be created with arrays
    and objects
  • The software designer must determine carefully an
    organization of data and objects that makes sense
    for the situation
  • See Tunes.java (page 335)
  • See CDCollection.java (page 337)
  • See CD.java (page 340)

24
Tunes.java Author Lewis/Loftus
  • public class Tunes
  • public static void main (String args)
  • CDCollection music new CDCollection ()
  • music.addCD ("Storm Front", "Billy Joel",
    14.95, 10)
  • music.addCD ("Come On Over", "Shania
    Twain", 14.95, 16)
  • music.addCD ("Soundtrack", "Les
    Miserables", 17.95, 33)
  • music.addCD ("Graceland", "Paul Simon",
    13.90, 11)
  • System.out.println (music)
  • music.addCD ("Double Live", "Garth Brooks",
    19.99, 26)
  • music.addCD ("Greatest Hits", "Jimmy
    Buffet", 15.95, 13)
  • System.out.println (music)

25
CDCollection.java 1
  • import java.text.NumberFormat
  • public class CDCollection
  • private CD collection
  • private int count
  • private double totalCost
  • public CDCollection ()
  • collection new CD100
  • count 0
  • totalCost 0.0
  • public void addCD (String title, String
    artist, double cost, int tracks)
  • if (count collection.length)
    increaseSize()
  • collectioncount new CD (title, artist,
    cost, tracks)
  • totalCost cost
  • count

26
CDCollection.java 2
  • public String toString ( )
  • NumberFormat fmt NumberFormat.getCurrencyIn
    stance()
  • String report "
    \n"
  • report "My CD Collection\n\n"
  • report "Number of CDs " count "\n"
  • report "Total cost "
    fmt.format(totalCost) "\n"
  • report "Average cost "
    fmt.format(totalCost/count)
  • report "\n\nCD List\n\n"
  • for (int cd 0 cd collectioncd.toString() "\n"
  • return report
  • private void increaseSize ( )
  • CD temp new CDcollection.length 2
  • for (int cd 0 cd cd) tempcd collectioncd
  • collection temp

27
CD.java Author Lewis/Loftus
  • import java.text.NumberFormat
  • public class CD
  • private String title, artist
  • private double cost
  • private int tracks
  • public CD (String name, String singer, double
    price, int numTracks)
  • title name
  • artist singer
  • cost price
  • tracks numTracks
  • public String toString()
  • NumberFormat fmt NumberFormat.getCurrencyIn
    stance()
  • String description
  • description fmt.format(cost) "\t"
    tracks "\t"
  • description title "\t" artist
  • return description

28
Sorting
  • Sorting is the process of arranging a list of
    items in a particular order
  • The sorting process is based on specific value(s)
  • sorting a list of test scores in ascending
    numeric order
  • sorting a list of people alphabetically by last
    name
  • There are many algorithms for sorting a list of
    items
  • These algorithms vary in efficiency
  • We will examine two specific algorithms
  • Selection Sort
  • Insertion Sort

29
Selection Sort
  • The approach of Selection Sort
  • select a value and put it in its final place into
    the list
  • repeat for all other values
  • In more detail
  • find the smallest value in the list
  • switch it with the value in the first position
  • find the next smallest value in the list
  • switch it with the value in the second position
  • repeat until all values are in their proper places

30
Selection Sort
  • An example
  • original 3 9 6 1 2
  • smallest is 1 1 9 6 3 2
  • smallest is 2 1 2 6 3 9
  • smallest is 3 1 2 3 6 9
  • smallest is 6 1 2 3 6 9
  • See SortGrades.java (page 342)
  • See Sorts.java (page 343) -- the selectionSort
    method

31
SortGrades.java Author Lewis/Loftus
  • public class SortGrades
  • public static void main (String args)
  • int grades 89, 94, 69, 80, 97, 85, 73,
    91, 77, 85, 93
  • Sorts.selectionSort (grades)
  • for (int index 0 index index)
  • System.out.print (gradesindex "
    ")

32
Sorts.java 1
  • public class Sorts
  • public static void selectionSort (int
    numbers)
  • int min, temp
  • for (int index 0 index numbers.length-1 index)
  • min index
  • for (int scan index1 scan numbers.length scan)
  • if (numbersscan min scan
  • temp numbersmin
  • numbersmin numbersindex
  • numbersindex temp

33
Swapping
  • Swapping is the process of exchanging two values
  • Swapping requires three assignment statements
  • temp first
  • first second
  • second temp

34
Insertion Sort
  • The approach of Insertion Sort
  • pick any item and insert it into its proper place
    in a sorted sublist
  • repeat until all items have been inserted
  • In more detail
  • consider the first item to be a sorted sublist
    (of one item)
  • insert the second item into the sorted sublist,
    shifting the first item as needed to make room to
    insert the new addition
  • insert the third item into the sorted sublist (of
    two items), shifting items as necessary
  • repeat until all values are inserted into their
    proper positions

35
Insertion Sort
  • An example
  • original 3 9 6 1 2
  • insert 9 3 9 6 1 2
  • insert 6 3 6 9 1 2
  • insert 1 1 3 6 9 2
  • insert 2 1 2 3 6 9
  • See Sorts.java (page 343) -- the insertionSort
    method

36
insertionSort.java
  • public static void insertionSort (int numbers)
  • for (int index 1 index index)
  • int key numbersindex
  • int position index
  • while (position 0
    numbersposition-1 key)
  • numbersposition numbersposition-1
  • position--
  • numbersposition key

37
Sorting Objects
  • Integers have an inherent order, but the ordering
    criteria of a collection of objects must be
    defined
  • Recall that a Java interface can be used as a
    type name and guarantees that a particular class
    implements particular methods
  • We can use the Comparable interface and the
    compareTo method to develop a generic sort for a
    set of objects
  • See SortPhoneList.java (page 347)
  • See Contact.java (page 348)
  • See Sorts.java (page 343) the second
    insertionSort method

38
SortPhoneList.java
  • public class SortPhoneList
  • public static void main (String args)
  • Contact friends new Contact7
  • friends0 new Contact ("John", "Smith",
    "610-555-7384")
  • friends1 new Contact ("Sarah",
    "Barnes", "215-555-3827")
  • friends2 new Contact ("Mark", "Riley",
    "733-555-2969")
  • friends3 new Contact ("Laura", "Getz",
    "663-555-3984")
  • friends4 new Contact ("Larry", "Smith",
    "464-555-3489")
  • friends5 new Contact ("Frank",
    "Phelps", "322-555-2284")
  • friends6 new Contact ("Marsha",
    "Grant", "243-555-2837")
  • Sorts.insertionSort(friends)
  • for (int index 0 index index) System.out.println (friendsindex)

39
Contact.java Author Lewis/Loftus
  • public class Contact implements Comparable
  • private String firstName, lastName, phone
  • public Contact (String first, String last,
    String telephone)
  • firstName first
  • lastName last
  • phone telephone
  • public String toString ( )
  • return lastName ", " firstName "\t"
    phone
  • public int compareTo (Object other)
  • int result
  • if (lastName.equals(((Contact)other).lastNam
    e))
  • result firstName.compareTo(((Contact)ot
    her).firstName)
  • else result lastName.compareTo(((Contact)
    other).lastName)
  • return result

40
  • public static void insertionSort (Comparable
    objects)
  • for (int index 1 index index)
  • Comparable key objectsindex
  • int position index
  • while (position 0
    objectsposition-1.compareTo(key) 0)
  • objectsposition objectsposition-1
  • position--
  • objectsposition key

41
Comparing Sorts
  • Both Selection and Insertion sorts are similar in
    efficiency
  • They both have outer loops that scan all
    elements, and inner loops that compare the value
    of the outer loop with almost all values in the
    list
  • Approximately n2 number of comparisons are made
    to sort a list of size n
  • We therefore say that these sorts are of order n2
  • Other sorts are more efficient order n log2 n

42
Two-Dimensional Arrays
  • A one-dimensional array stores a list of elements
  • A two-dimensional array can be thought of as a
    table of elements, with rows and columns

43
Two-Dimensional Arrays
  • To be precise, a two-dimensional array in Java is
    an array of arrays
  • A two-dimensional array is declared by specifying
    the size of each dimension separately
  • int scores new int1250
  • A two-dimensional array element is referenced
    using two index values
  • value scores36
  • The array stored in one row or column can be
    specified using one index

44
Two-Dimensional Arrays
  • See TwoDArray.java (page 351)
  • See SodaSurvey.java (page 352)

45
TwoDArray.java Author Lewis/Loftus
  • public class TwoDArray
  • public static void main (String args)
  • int table new int510
  • for (int row0 row
  • for (int col0 col
  • tablerowcol row 10 col
  • for (int row0 row
  • for (int col0 col
  • System.out.print (tablerowcol "\t")
  • System.out.println()

46
SodaSurvey.java
  • import java.text.DecimalFormat
  • public class SodaSurvey
  • public static void main (String args)
  • int scores 3, 4, 5, 2, 1, 4, 3, 2,
    4, 4,
  • 2, 4, 3, 4, 3, 3, 2, 1,
    2, 2,
  • 3, 5, 4, 5, 5, 3, 2, 5,
    5, 5,
  • 1, 1, 1, 3, 1, 2, 1, 3,
    2, 4
  • final int SODAS scores.length
  • final int PEOPLE scores0.length
  • int sodaSum new intSODAS
  • int personSum new intPEOPLE
  • for (int soda0 soda
  • for (int person0 person person) sodaSumsoda scoressodaperson
  • personSumperson
    scoressodaperson
  • DecimalFormat fmt new DecimalFormat
    ("0.")
  • System.out.println ("Averages\n")
  • for (int soda0 soda
  • System.out.println ("Soda " (soda1)
    " " fmt.format ((float)sodaSumsoda/PEOPLE)
    )

47
Multidimensional Arrays
  • An array can have many dimensions
  • If it has more than one dimension, it is called a
    multidimensional array
  • Each dimension subdivides the previous one into
    the specified number of elements
  • Each array dimension has its own length constant
  • Because each dimension is an array of array
    references, the arrays within one dimension can
    be of different lengths
  • these are sometimes called ragged arrays

48
The ArrayList Class
  • The ArrayList class is part of the java.util
    package
  • Like an array, it can store a list of values and
    reference them with an index
  • Unlike an array, an ArrayList object grows and
    shrinks as needed
  • Items can be inserted or removed with a single
    method invocation
  • It stores references to the Object class, which
    allows it to store any kind of object
  • See Beatles.java (page 357)

49
Beatles.java Author Lewis/Loftus
  • import java.util.ArrayList
  • public class Beatles
  • public static void main (String args)
  • ArrayList band new ArrayList()
  • band.add ("Paul")
  • band.add ("Pete")
  • band.add ("John")
  • band.add ("George")
  • System.out.println (band)
  • int location band.indexOf ("Pete")
  • band.remove (location)
  • System.out.println (band)
  • System.out.println ("At index 1 "
    band.get(1))
  • band.add (2, "Ringo")
  • System.out.println (band)
  • System.out.println ("Size of the band "
    band.size())

50
ArrayList Efficiency
  • The ArrayList class is implemented using an array
  • The code of the ArrayList class automatically
    expands the array's capacity to accommodate
    additional elements
  • The array is manipulated so that indexes remain
    continuous as elements are added or removed
  • If elements are added to and removed from the end
    of the list, this processing is fairly efficient
  • If elements are inserted and removed from the
    middle of the list, the elements are constantly
    being shifted around

51
Summary
  • Chapter 6 has focused on
  • array declaration and use
  • passing arrays and array elements as parameters
  • arrays of objects
  • sorting elements in an array
  • multidimensional arrays
  • the ArrayList class
Write a Comment
User Comments (0)
About PowerShow.com