vectors, strings, and enumeration data types

35
Chris Kiekintveld CS 2401 (Fall 2010) Elementary Data Structures and Algorithms Vectors, Strings, and Enumeration Data Types

Upload: ella

Post on 08-Feb-2016

38 views

Category:

Documents


0 download

DESCRIPTION

Vectors, Strings, and Enumeration Data Types. Chris Kiekintveld CS 2401 (Fall 2010) Elementary Data Structures and Algorithms. A Weakness of Arrays. Suppose we declare an array of “Student” objects: Student[] students = new Student[10]; What if a new student joins the class? - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Vectors, Strings, and Enumeration Data Types

Chris KiekintveldCS 2401 (Fall 2010)

Elementary Data Structures and Algorithms

Vectors, Strings, and Enumeration Data Types

Page 2: Vectors, Strings, and Enumeration Data Types

A Weakness of Arrays

Suppose we declare an array of “Student” objects:

Student[] students = new Student[10];

What if a new student joins the class? The size of an array cannot be increased after it is

instantiated

Java Programming: Program Design Including Data Structures 2

Page 3: Vectors, Strings, and Enumeration Data Types

Resizing an Array (the hard way)Student[] students = new Student[10];

// do some stuff…// now we need to add student 11

Student[] students2 = new Student[11]; for(int i = 0; i < students.length; i++) { students2[i] = students[i]; }student[10] = new Student();

Java Programming: Program Design Including Data Structures 3

Page 4: Vectors, Strings, and Enumeration Data Types

Java Programming: Program Design Including Data Structures 4

class Vector

The class Vector can be used to implement a list, replacing a simple array

The size of a Vector object can grow/shrink during program execution

The Vector will automatically grow to accommodate the number of elements you put in it

Page 5: Vectors, Strings, and Enumeration Data Types

Java Programming: Program Design Including Data Structures 5

class Vector (continued)

The class Vector is contained in the package java.util

Programs must include either: import java.util.*; import java.util.Vector;

Page 6: Vectors, Strings, and Enumeration Data Types

Vector Declaration Declare/initialize

Vector<Student> students = new Vector<Student>();

The syntax <…> is used to declare the type of object that will be stored in the Vector

If you add a different type of object, an exception is thrown Not strictly necessary, but highly recommended (compiler

warning)

Java Programming: Program Design Including Data Structures 6

Page 7: Vectors, Strings, and Enumeration Data Types

Vector Size/Capacity The size of a vector is the number of elements The capacity of a vector is the maximum number of elements

before more memory is needed If size exceeds capacity when adding an element, the capacity

is automatically increased Declares a larger storage array Copies existing elements, if necessary Growing the capacity is expensive!

By default, the capacity doubles each time

Java Programming: Program Design Including Data Structures 7

Page 8: Vectors, Strings, and Enumeration Data Types

Setting Initial Capacity

If you know you will need a large vector, it may be faster to set the initial capacity to something large

Vector<Student> students = new Vector<Student>(1000);

Java Programming: Program Design Including Data Structures 8

Page 9: Vectors, Strings, and Enumeration Data Types

Size and capacity Get the current size and capacity:Vector<Student> students = new Vector<Student>(1000);students.size(); // returns 0students.capacity(); // returns 1000

Setting size and capacity:// adds null elements or deletes elements if necessarystudents.setSize(10); // increases capacity if necessary students.ensureCapacity(10000);

Java Programming: Program Design Including Data Structures 9

Page 10: Vectors, Strings, and Enumeration Data Types

Java Programming: Program Design Including Data Structures 10

Vector<String> stringList = new Vector<String>();

stringList.add("Spring");stringList.add("Summer");stringList.addElement("Fall");stringList.addElement("Winter");

Adding Elements

add and addElementhave identical functionality

Page 11: Vectors, Strings, and Enumeration Data Types

Java Programming: Program Design Including Data Structures 11

stringList.get(0); // “Spring”stringList.get(3); // “Winter”stringList.get(4); // ArrayIndexOutOfBounds Exception

Accessing Elements

Page 12: Vectors, Strings, and Enumeration Data Types

Java Programming: Program Design Including Data Structures 12

Primitive Data Types and the class Vector

Every component of a Vector object is a reference Primitive data types are not objects

Corresponding to each primitive data type, Java provides a wrapper class

JDK 5.0 provides autoboxing and auto-unboxing of primitive data types

Page 13: Vectors, Strings, and Enumeration Data Types

Java Programming: Program Design Including Data Structures 13

Primitive Data Types and the class Vector (continued)

Creating a Vector of Integer objects

Vector<Integer> list = new Vector<Integer>();

list.add(13); // with autoboxinglist.add(new Integer(25)); // without autoboxing

int tmp = list.get(0); // with autounboxingint tmp2 = list.get(0).intValue() //without

Page 14: Vectors, Strings, and Enumeration Data Types

Java Programming: Program Design Including Data Structures 14

Vector and the foreach loop

Each Vector object is a collection of elements You can use a foreach loop to process its elements Exactly like using a foreach loop with an array

Syntax:for (type identifier : vectorObject)statements

Page 15: Vectors, Strings, and Enumeration Data Types

Java Programming: Program Design Including Data Structures 15

Members of the class Vector

Page 16: Vectors, Strings, and Enumeration Data Types

Java Programming: Program Design Including Data Structures 16

Members of the class Vector (continued)

Page 17: Vectors, Strings, and Enumeration Data Types

Java Programming: Program Design Including Data Structures 17

Members of the class Vector (continued)

Page 18: Vectors, Strings, and Enumeration Data Types

Java Programming: Program Design Including Data Structures 18

Members of the class Vector (continued)

Page 19: Vectors, Strings, and Enumeration Data Types

Chris KiekintveldCS 2401 (Fall 2010)

Elementary Data Structures and Algorithms

Vectors, Strings, and Enumeration Data Types

(continued)

Page 20: Vectors, Strings, and Enumeration Data Types

Exercise

Java Programming: Program Design Including Data Structures 20

Vector<Integer> a = new Vector<Integer>();

a.add(4);a.add(7);a.add(10);a.set(1, 5);int tmp = a.remove(0);System.out.println(tmp);System.out.println(a.indexOf(new Integer(10));System.out.println(a.toString());a.clear();System.out.println(a.isEmpty());

Page 21: Vectors, Strings, and Enumeration Data Types

Multi-dimensional Vectors

Can we have a 2d vector? Yes! Just like a 2d array, but notation is more cumbersome

Java Programming: Program Design Including Data Structures 21

Page 22: Vectors, Strings, and Enumeration Data Types

Multi-dimensional Vectors

Java Programming: Program Design Including Data Structures 22

Vector<Vector<Integer>> a = new Vector<Vector<Integer>>();

for (int i = 0; i < 4; i++) { Vector<Integer> tmp = new Vector<Integer>(); for (int j = 0; j < 4; j++) { tmp.add(i+j); } a.add(tmp);}

System.out.println(a.get(2).get(3));System.out.println(a.get(0).get(2));

Page 23: Vectors, Strings, and Enumeration Data Types

Vector vs. ArrayList

Java has another class called ArrayList This class is almost identical in function to Vector,

and has most of the same methods ArrayList is typically faster ArrayList should *not* be used if your code is

multi-threaded (i.e., if you allow parallel execution)

Java Programming: Program Design Including Data Structures 23

Page 24: Vectors, Strings, and Enumeration Data Types

Java Programming: Program Design Including Data Structures 24

Enumeration Types

Enumeration or enum types User-defined data types User specifies the values of that data type Defined using the key word enum

Syntax example: enum Grades {A, B, C, D, F};

The values are identifiers Called enumeration or enum constants Must be unique within an enum type

Page 25: Vectors, Strings, and Enumeration Data Types

Java Programming: Program Design Including Data Structures 25

Enumeration Types (continued)

Each enum type is a special type of class Values are (special types of) objects of that class

Using an enum typeGrades myGrade;myGrade = Grades.B;System.out.println (“myGrade: ” + myGrade);

Each enum constant has an ordinal value Ordinal value of the first enum constant is 0

Page 26: Vectors, Strings, and Enumeration Data Types

Java Programming: Program Design Including Data Structures 26

Enumeration Types (continued)

Page 27: Vectors, Strings, and Enumeration Data Types

Java Programming: Program Design Including Data Structures 27

Enumeration Types (continued)

Because each enum type is a class, it can contain Constructors, (private) data members, and methods

enum type considerations Defined using enum rather than class enum types are implicitly final enum constants are implicitly static You cannot instantiate objects using the operator new Constructors are implicitly private You cannot create new classes from an enum type

Page 28: Vectors, Strings, and Enumeration Data Types

Java Programming: Program Design Including Data Structures 28

Enumeration Types (continued)

Page 29: Vectors, Strings, and Enumeration Data Types

Java Programming: Program Design Including Data Structures 29

public enum Directions{North, South, East, West};public int xPos = 0;public int yPos = 0;

public void move(Directions dir) { switch(dir) { case Directions.North: yPos++; break; case Directions.South: yPos--; break; case Directions.East: xPos++; break; case Directions.West: xPos--; break; case default: System.out.println(“Invalid direction!”); } }

Page 30: Vectors, Strings, and Enumeration Data Types

Enumeration Types

See this site for more discussion and examples: http://download.oracle.com/javase/1.5.0/docs/guide/language/enums.html

Java Programming: Program Design Including Data Structures 30

Page 31: Vectors, Strings, and Enumeration Data Types

Strings

Strings are essentially arrays of characters The string class provides many functions for

manipulating strings Searching/matching operations Replacing characters Finding characters Trimming whitespace Etc.

Java Programming: Program Design Including Data Structures 31

Page 32: Vectors, Strings, and Enumeration Data Types

Java Programming: Program Design Including Data Structures 32

class String (Revisited)

Page 33: Vectors, Strings, and Enumeration Data Types

Java Programming: Program Design Including Data Structures 33

class String (Revisited) (continued)

Page 34: Vectors, Strings, and Enumeration Data Types

Java Programming: Program Design Including Data Structures 34

class String (Revisited) (continued)

Page 35: Vectors, Strings, and Enumeration Data Types

Java Programming: Program Design Including Data Structures 35

class String (Revisited) (continued)