Chapter 12 Data Structures and Collections. 2 Knowledge Goals Understand the difference between...
-
date post
20-Jan-2016 -
Category
Documents
-
view
219 -
download
0
Transcript of Chapter 12 Data Structures and Collections. 2 Knowledge Goals Understand the difference between...
Chapter 12
Data Structures
and Collections
2
Knowledge Goals
• Understand the difference between array and linked implementations of a list
• Know how to a stack works• Know how a queue works• Know how a binary tree works• Know how a hash table works• Understand the concepts behind the java
collections framework
3
Skill Goals
• Develop a linked data structure• Use the ArrayList and LinkedList classes• Use the HashSet and TreeSet classes• Use the Stack class• Use the LinkedList class to implement a
queue• Choose when to use an array-based versus a
linked implementation of a data structure
4
Linked Structures
Array-basedlist isfixedsize
5
Linked Structures
Array-based is
physicallyordered;linked islogicallyordered,
whichmeans …
6
Linked Structures
Insertionsand
deletionsare
easier
7
Linked Structure
Linked list
A list in which the order of the components is determined by an explicit link field in each node, rather than by the sequential order of the components in memory
External reference (pointer)
A named variable that references (points to) the first node (head) of a linked list
Yes, but how does it work?
8
Linked StructureList
A node
Each node containsitem and a link
External pointer
9
Linked Structures
class Node
{
Node link = null;
String item;
Node()
{ item = ""; }
Node(String data)
{ item = data; }
}
null is a keywordmeaning points to
nothing
defaultconstructor
parameterizedconstructor
10
Linked Structures
Let's create a linked list with three nodes, containing "Adams", "Baker", and "Carter"
We begin by creating two variables
Node current; // Pointer used to keep track // of where we
are in the list
Node list; // External point to the list
Result
11
Linked Structures
list = new Node("Adams");
current = list;
Result
12
Linked Structures
current.link = new Node("Baker");
Result
13
Linked Structures
current = current.link;
Result
14
Linked Structures
current.link = new Node("Carter");
current = current.link;
Result
15
Linked Structures
Traversal
Visiting every node in a data structure following an organized pattern of access
current = list; while (current.link != null){ System.out.println(current.item); current = current.link; }
What is the pattern of access?
16
Linked Structures
Which of thesewill change
with thelinked
version?
17
Linked Structures
Does the CRC cardfor a class change
with the implementation?
18
Linked Structures
Observer operations
public boolean isEmtpy()
{ return list == null; }
public boolean contains(String item)
{
Node current = list;
while (current != null &&
curent.item.compareTo(item) != 0)
curent = current.link;
return current != null
}
19
Linked Structures
if (list.contains("Doggett"))…
Searchwhenitemis notin the
list
20
Linked Structures
Size in an array-based list just returns numItems; What about in a linked-implementation?
– Can keep a counterincrement with each insertion
decrement with each deletion
– Can count the number of items each time
Which is best (better)?
21
Linked Structures
public int size(){ Node current = list; int numItems = 0; while (current != null) { numItems++; current = current.link; } return numItems;}
Is this anexample
of atraversal?
22
Linked Structures
MutatorsAdd– Insert where? To match array-based traversal, new
item must go at the end– How to find end? Search or keep a pointer– Special case(s)? Empty list
tail
23
Linked Structure
public void add(String newItem) { Node item = new Node(newItem); if (list == null) { list = item; tail = item; } else { tail.link = item; tail = tail.link; }}
Empty listSet list and tail
to item
Not empty listSet item as last nodeSet tail to last node
24
Linked Structures
Remove– Item not there? Do nothing– What if item is the first? Reset external pointer– What if item is the last? Reset tail pointer– What if item is anywhere else? General case
25
Linked Structures
Can't be reached;System recaptures it
26
Linked Structures
What is prior?
Remove "Adams"
27
Linked StructuresRemove "Carter"
28
Linked Structures
Remove "Adams" (only node)
29
public void remove(String item) { Node current = list; Node prior = null; while (current != null && current.item.compareTo(item) != 0)
{ prior = current; current = current.link; } if (current != null) { if (current == tail) tail = prior; if (prior == null) list = list.link; else prior.link = current.link; }}
Search for item
item in last node
item in first node
item in interior node
30
Linked Structures
Iterator "trio"public void resetList()
{ current = list; }
public boolean hasNext()
{ return current != null; }
public String next(){ String item = current.item; current = current.link; return item;}
What assumptionsmust be in
documentation?
31
Other Data Structures
What do theseobjects havein common?
32
Other Data Structures
Stack
A data structure in which insertions and deletions can be made from only one end
LIFO
Last In First Out
Can you name some additional LIFO structures in every day life?
33
Other Data Structures
Firstitem
called"top"
34
Other Data Structures
What properties does this illustration exhibit?
35
Other Data Structures
Queue
A data structure in which insertions are made at one end and deletions are made at the other end
FIFO
First In First Out
Can you name some additional FIFO structures in every day life?
36
Other Data Structures
37
Other Data Structures
38
Owner Jake
Manager Chef Brad Carol
Waitress Waiter Cook Helper Joyce Chris Max Len
Other Data Structures
Jake's Pizza Shop
What properties does this illustration exhibit?
39
Owner Jake
Manager Chef Brad Carol
Waitress Waiter Cook Helper Joyce Chris Max Len
ROOT NODE
Other Data Structures
40
Owner Jake
Manager Chef Brad Carol
Waitress Waiter Cook Helper Joyce Chris Max Len
LEAF NODES
Other Data Structures
41
Owner Jake
Manager Chef Brad Carol
Waitress Waiter Cook Helper Joyce Chris Max Len
LEFT SUBTREE OF ROOT NODE
Other Data Structures
42
Owner Jake
Manager Chef Brad Carol
Waitress Waiter Cook Helper Joyce Chris Max Len
RIGHT SUBTREE OF ROOT NODE
Other Data Structures
43
Other Data Structures
Binary tree
A data structure, each of whose nodes refer to left and right child nodes
44
Other Data Structures
Binary search tree
A binary tree in which the value in any node is greater than the value in the left child and any of its children and less than the value in its right child and any of its children
45
Other Data Structures
Binary search trees provide rapid searches
Searchfor50
46
Other Data Structures
Searchfor18
Wherewould18 be
if there?
47
Other Data Structures
Inorder(tree)if tree is not NULL
Inorder(Left(tree))Visit Info(tree)Inorder(Right(tree))
PostOrder(tree)if tree is not NULL
Postorder(Left(tree))Postorder(Right(tree))Visit Info(tree)
PreOrder(tree)if tree is not NULL
Visit Info(tree)Preorder(Left(tree))Preorder(Right(tree))alphabetic order
visits leaves first
expression evaluation
Traversals
48
Other Data Structures
49
Other Data Structures
Graph
A data
structure in
which the
nodes can
be arranged
in any pattern
50
Other Data Structures
Hashing
A technique to
perform insertions
and access to an
item in constant
time by using the
value to identify
its location in the
structure
51
Other Data Structures
[ 0 ]
[ 1 ]
[ 2 ]
[ 3 ]
[ 4 ]
. . .
Empty
4501
Empty
8903
8
10
values
[ 97]
[ 98]
[ 99]
7803
Empty
.
.
.
Empty
2298
3699
HandyParts company makes no more than 100 different parts, but theparts all have four digit numbers
index = partNum % 100
Hash function
A function used to manipulate the value to produce an index that identifies its location
52
Use the hash function
Hash(key) = partNum % 100
to place the element with
part number 5502 in the
array
[ 0 ]
[ 1 ]
[ 2 ]
[ 3 ]
[ 4 ]
. . .
Empty
4501
Empty
8903
8
10
values
[ 97]
[ 98]
[ 99]
7803
Empty
.
.
.
Empty
2298
3699
Other Data Structures
53
Next place part number6702 in the array
6702 % 100 = 2
But values[2] is already occupied, causing acollision
[ 0 ]
[ 1 ]
[ 2 ]
[ 3 ]
[ 4 ]
. . .
values
[ 97]
[ 98]
[ 99]
7803
Empty
.
.
.
Empty 2298
3699
Empty
4501
5502
Other Data Structures
54
One solution
Repeatedly increment indexuntil an empty locationis found for part number 6702
[ 0 ]
[ 1 ]
[ 2 ]
[ 3 ]
[ 4 ]
. . .
values
[ 97]
[ 98]
[ 99]
7803
Empty
.
.
.
Empty
2298
3699
Empty
4501
5502
Other Data Structures
55
Part 6702 can be placed atthe location with index 4
[ 0 ]
[ 1 ]
[ 2 ]
[ 3 ]
[ 4 ]
. . .
values
[ 97]
[ 98]
[ 99]
7803
Empty
.
.
.
Empty
2298
3699
Empty
4501
5502
Hashing
56
Part 6702 is placed atthe location with index 4
Where would the part withnumber 4598 be placed usingthis scheme?
[ 0 ]
[ 1 ]
[ 2 ]
[ 3 ]
[ 4 ]
. . .
values
[ 97]
[ 98]
[ 99]
7803
6702
.
.
.
Empty
2298
3699
Empty
4501
5502
Hashing
57
Other Data Structures
Handling collisions with chaining
58
Other Data Structures
Comparison of incrementing index and chaining
59
Generic Types in Java
Generic types
A type for which the operations are defined but the type of the objects being manipulated is not
How have we handled generics previously?
60
Generic Types in Java
class Node <ItemType extends Comparable<ItemType>>{ Node<ItemType> link = null; ItemType item;
Node() { } Node(ItemType newItem) { item = newItem; }}
Node<ItemType> list;
Node<ItemType> tail;
In client code
61
Java Collections Framework
Classes that implement Collection are data structures that hold items in an organized manner
Set is Java's list with no duplicates
Interface
Hierarchy
62
Java Collections Framework
Classes that implement Map hold values in association with objects called keys
Rest of Interface hierarchy
63
Java Collections Framework
Let's look at this another way
64
Collection
List Set
SortedSet
AbstractCollection
AbstractList AbstractSet
AbstractSequentialList
Interfaces
Abstract Classes
implements
extends
65
AbstractList AbstractSetAbstract
SequentialList
LinkedList ArrayList Vector HashSet TreeSet
Observers inAbstractCollectioncontains containsAllisEmptytoArraytoStringsize
StackLinked
HashSet
Concrete Classes
66
Java Collections Framework
AbstractCollections implements the Iterable Interface that has one method
iterator that returns an Iterator object
Iterator myIter = myList.iterator();
while (myIter.hasNext()) System.out.println(myIter.next());
67
Java Collections Framework
Collections class contains static helper methods for use with the classes in the collection
void sort(List)int binarySearch(List, key)void reverse(List)void shuffle(List)void copy(DestinationList, SourceList)Object min(Collection)Object max(Collection)boolean replaceAll(List, OldValueObject, NewValueObject)boolean disjoint(Collection, Collection)
68
Java Collections Framework
ArrayList is a concrete list class using an array-based implementation with the usual list operations and some array-specific methods as well such as:add(index, item) Inserts the item at the index position
set(index, item) Replaces the item at the index position;
returns replaced object
remove(index) Removes the item at the index position
trimToSize() Trim array to list size
ensureCapacity(limit) Makes sure the underlying array has
limit positions
69
Java Collections Framework
LinkedList is a concrete list class with a linked implementation with the usual list operations and some additional ones such as:
add(index, item) Inserts item at the index position
getFirst() Returns a reference to the first item
getLast() Returns a reference to the last item
poll() Deletes and returns the first element
removeLast() Deletes and returns last element
remove(index) Deletes and returns the item in the index
position
70
Java Collections Framework
ArrayList and LinkedList also have methods that take collections as arguments
removeAll(collection) Removes all items from list
that match items in collection
retainAll(collection) Removes all items that do not
match items in the collection
addAll(collection) Adds all the items in the collection
to the end of the list
Do these operations add any new functionality?
71
Java Collections Framework
Sets (a lists without duplicates) is implemented in two concrete classes: HashSet and TreeSet
– Names give the underlying data structure– Both implement all the regular list
operations– TreeSet is able to return subtrees
(collections) with values less than or greater than a parameter
72
public static void main(String[] args) throws
IOException{ inFile = new Scanner(new FileReader("list.dat")); outFile = new PrintWriter(new FileWriter("list.out")); ArrayList list = new ArrayList(4); String line; while (inFile.hasNextLine()) { line = inFile.nextLine(); list.add(line); } Iterator iterator = list.iterator(); while (iterator.hasNext()) System.out.println(iterator.next());
What will the output look like?
73
Java Collections Framework
File:redblueyellowbrownblackpinkgreenorangewhitevioletcrimsonrose
Output:redblueyellowbrownblackpinkgreenorangewhitevioletcrimsonrose
Output from
ArrayListimplementation
74
Java Collections Framework
File:redblueyellowbrownblackpinkgreenorangewhitevioletcrimsonrose
Output:greenroseredwhiteorangecrimsonpinkbrownblueyellowvioletblack
HashSet list = new HashSet();
Output fromHashSet
implementation
75
Java Collections Framework
File:redblueyellowbrownblackpinkgreenorangewhitevioletcrimsonrose
Output:blackbluebrowncrimsongreenorangepinkredrosevioletwhiteyellow
TreeSet list = new TreeSet();
Output fromTreeSet
implementation
76
Extras
I designedone of the
best knownsorting
algorithms and wasknighted recently
Who am I
77
Extras - GUI Track
Handling events with radio buttons requires declaring and instantiating a ButtonGroup
object declaring and instantiating each radio button registering an ActionListener with each
radio button adding each button to ButtonGroup object adding each button to panel parameter to getActionCommand tells which
button was pressed
78
Extras - GUI Track
Window withthreeradio
buttonsand a label