Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
4 views

Java Collections Framework

The document discusses various data structures and abstract data types in the Java Collections Framework including lists, sets, maps, queues, and stacks. It provides examples and comparisons of different implementations like ArrayList, LinkedList, HashSet.

Uploaded by

zelda
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
4 views

Java Collections Framework

The document discusses various data structures and abstract data types in the Java Collections Framework including lists, sets, maps, queues, and stacks. It provides examples and comparisons of different implementations like ArrayList, LinkedList, HashSet.

Uploaded by

zelda
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 47

Java Collections Framework (JCF):

Lists, Stacks, Queues, Priority


Queues, Sets, and Maps

Andrew H. Fagg: CS 2334: Java Collections Framework 1


Administrivia
•Lab 5 graded
•Lab 6 grades coming soon
•Project 2 due on Wednesday
• Testing
• Exceptions
• Code review slots open
•Lab 8 released soon
•Project 3 coming this week
•Exam 1
Andrew H. Fagg: CS 2334: Java Collections Framework 2
Data Structures vs Abstract Data Types

•Data Structure:
• A specific way of organizing data and operations
to access/use the data
• Structure of the data tied directly to the
implementation

•Abstract data type: An implementation


independent group of data and a set of
operations on this data

Andrew H. Fagg: CS 2334: Java Collections Framework 3


Data Structures We Know

•Both arrays and ArrayList are data structures


• Implementation dependent
•What are the similarities between ArrayList
and arrays?
• Organization of data?
• Operations?
•What are the differences between these?
• Organization of data?
• Operations?
Andrew H. Fagg: CS 2334: Java Collections Framework 4
Class Hierarchy for ArrayList

• Which are
abstract data
types?
• Which are
data
structures?
Andrew H. Fagg: CS 2334: Java Collections Framework 5
Collection Interface

What is a collection?

Andrew H. Fagg: CS 2334: Java Collections Framework 6


Collection Interface

What is a collection?
•“Bag” (or “pile”) of objects

Andrew H. Fagg: CS 2334: Java Collections Framework 7


Collection Interface

What is a collection?
•“Bag” (or “pile”) of objects (no ordering)

What does the Collection interface provide?


•add()
•remove()
•contains()
•Iterator: a means of iterating over all objects
in the collection
Andrew H. Fagg: CS 2334: Java Collections Framework 8
List Interface

•What is a list?
• Ordered Collection
• Duplicates

Andrew H. Fagg: CS 2334: Java Collections Framework 9


List Interface

•What is a list?
• Ordered Collection
• Duplicates

•Java API: List interface


• What else is provided over a Collection?

Andrew H. Fagg: CS 2334: Java Collections Framework 10


Linked Lists

•Example of a linked list using people …


• Singly linked list versus doubly linked list
• How do we search for items?
• How efficient is it to add items?

•Java API: examine LinkedList API

Andrew H. Fagg: CS 2334: Java Collections Framework 11


LinkedList

•LinkedList: concrete class


• What methods are in LinkedList and not
ArrayList?

•Critical data structure difference: LinkedList


vs. ArrayList
• Incremental allocation
• LinkedList makes adding to the head and tail of
the list cheaper

Andrew H. Fagg: CS 2334: Java Collections Framework 12


Choosing Lists

A LinkedList is used instead of an ArrayList


when:
•Size of structure changes radically over time
• Once ArrayLists get big, they stay big
•Random access not needed
• What does this do to binary search?
•Insertion and deletion at head and tail and
more common than search

Andrew H. Fagg: CS 2334: Java Collections Framework 13


Administriva

•Project 2 should be complete


• Code reviews due in 1 week
• Sign up for a slot or come in for a “walk-in”
review
•Lab 8 is available and due on Monday @7pm
•Project 3 will be out by the weekend (with
discussion on Monday)

Andrew H. Fagg: CS 2334: Java Collections Framework 14


Iterator<E>

Object that iterates over some collection


•hasNext(): is there another item in the
collection that hasn’t been “touched”
•next(): return the next item

Andrew H. Fagg: CS 2334: Java Collections Framework 15


LinkedList Example

Linked List of Person…

Andrew H. Fagg: CS 2334: Java Collections Framework 16


Iterator<E>

•In general, you should not be modifying the


list as you are iterating over it!
•Can lead to very strange behavior
•Exception: Iterator<E> provides a remove()
method

Andrew H. Fagg: CS 2334: Java Collections Framework 17


Collection vs Collections
• Collection interface: The root of the JCF
hierarchy
• Represent a group of objects
• Operations include: add/remove/iterate

• Collections class: provides many static methods,


including: shuffle, max, min, reverseOrder, sort,
frequency, …

Examine API for Collections and Collection…


Andrew H. Fagg: CS 2334: Java Collections Framework 19
Person example II

•Sort the Persons


• Name, then ID
• Reverse order by ID
•Use an Iterator to loop through the scores
• Explicit Iterator
• Implicit Iterator (for each loop)

Andrew H. Fagg: CS 2334: Java Collections Framework 21


Abstract Data Type: Queue

•Example of queue with people to buy tickets


•Key: First in, First out (FIFO)
•See: Java API: Queue Interface

Andrew H. Fagg: CS 2334: Java Collections Framework 22


Example

Store people about to compete in an event in


Queue

Andrew H. Fagg: CS 2334: Java Collections Framework 23


Priority Queue

•Standard Queue: order by insertion order


•Priority Queue: order by some ordering
• Natural order or defined by a Comparator

•Java API: Examine PriorityQueue API


•Example: office hours
• What happens if President Boren shows up?

Andrew H. Fagg: CS 2334: Java Collections Framework 24


Stack

•Last in First out (LIFO)


•Add (push) and remove (pop) items to/from
the top of the stack

•Data structure for Stack is extensible array

Andrew H. Fagg: CS 2334: Java Collections Framework 25


Stack

•Example: grading exams


•Example: System stack
• main() method is at the bottom
• Most recent method call is at top
• Call a new method: pushes the method onto the
stack
• Return from a method: pops the top method off
of the stack

Andrew H. Fagg: CS 2334: Java Collections Framework 26


Uses for Collections Class
• Shuffle exam questions on multiple choice tests
• Frequency to figure out how many coins of each
type you have
• ReplaceAll to fix all of an item in an inventory
(recalls etc)
• ReplaceAll to give everyone the same grade
• IndexOfSublist to return a sublist all students
born in Boston assuming they are sorted by
birth location
• nCopies to make lots of clones
• Empty to get rid of all your homework

Andrew H. Fagg: CS 2334: Java Collections Framework 27


Backward Compatibility
•Vector and Stack
• Part of Java from the start
• Were retrofitted into the JCF
• Synchronized– expensive, but needed for
threading
•Vector
• Data structure: extensible array
• Added methods from List interface that weren’t
in class
• Added generic
• Uses Enumeration interface (old form of Iterator)
Andrew H. Fagg: CS 2334: Java Collections Framework 28
Sets and Maps

Andrew H. Fagg: CS 2334: Java Collections Framework 29


Set Interface

•Set is another abstract data type


• Elements in a set are not ordered
• No duplicate elements
•How could Set be implemented with an array
data structure?
• Why isn’t this good enough?

Andrew H. Fagg: CS 2334: Java Collections Framework 30


Set Interface

•Examine class hierarchy in API


• Note similarities and differences to design for
ArrayList hierarchy
•What operations are typical of sets in
mathematics?
•What operations does Java Set support?
• Which Java Set operations are similar to those in
discrete math?

Andrew H. Fagg: CS 2334: Java Collections Framework 31


Choosing Sets
•Sets are used when order isn’t important
• We’re so used to using arrays, that we tend to
think of order being important when it isn’t
•Example: Bug tracking software
• Store bug reports
• Find bug reports
•Example: grocery list
•Remember sets are the theoretical basis of
most of computer science—they are
everywhere
Andrew H. Fagg: CS 2334: Java Collections Framework 32
HashSet

HashSet is a data structure (also called a hash


table) that implements the Set interface

Andrew H. Fagg: CS 2334: Java Collections Framework 33


HashSet: Data Structure

Approach:
•Create a hash code from the object
• Summarizes the content of the object
• May not be unique
• Eclipse can generate automatically (** demo)
•We’ve seen this method in the Object class
•Use the hash code as an address in a huge
array (called a hash table)

Andrew H. Fagg: CS 2334: Java Collections Framework 34


Example

•Create a set of students


• What should our hash code be?
•Use set operations from Set Interface API
• http://docs.oracle.com/javase/tutorial/collection
s/interfaces/set.html

Andrew H. Fagg: CS 2334: Java Collections Framework 35


Example HashSet

•Suppose we’re storing numerical data


•Address is hashCode % tableSize
•Let the table size be 100
• Insert 23983, 10484, 3817692, 1968372, 938983
•Collision: move to the next free spot in the
table
•Classic time/space tradeoff

Andrew H. Fagg: CS 2334: Java Collections Framework 36


Hash Set

contains(Object o):
•Compute the hash value for the object
•Compute the address in the hash table
•Is anything at that address?
• No: return false
• Yes: is that object equal to o?

Andrew H. Fagg: CS 2334: Java Collections Framework 37


Hash Set

contains(Object o):
•Compute the hash value for the object
•Compute the address in the hash table
•Is anything at that address?
• No: return false
• Yes: is that object equal to o?
• Yes: return true

Andrew H. Fagg: CS 2334: Java Collections Framework 38


Hash Set

contains(Object o):
•Compute the hash value for the object
•Compute the address in the hash table
•Is anything at that address?
• No: return false
• Yes: is that object equal to o?
• Yes: return true
• No: increment the hash table address

Andrew H. Fagg: CS 2334: Java Collections Framework 39


Critical Hash Table Measurements

Load factor: # of used elements/table size


•Load factor needs to stay small for a table to
work well
•When the load factor gets close to 1,
clustering is a problem (many address
increments)
•HashSet fixes this by reallocating the table
when it gets too dense (expensive!)

Andrew H. Fagg: CS 2334: Java Collections Framework 40


Critical Hash Table Measurements

Choosing the table size, the load factor, and


the hash functions are critical parts to the
success of hashing
•If these are done well, hashing is fabulous
•Lots of people don’t use hashing because of
fear of these factors
•If managed correctly, hashing can be
incredibly good

Andrew H. Fagg: CS 2334: Java Collections Framework 41


Example for Home

•Create a HashSet that stores 1000 randomly


generated integers
•Search for each integer
•Measure time
• System.nanotime()
•Compare to ints stored in an ArrayList
• How many lines of code have to be changed?
• Compare what happens when table size properly
created initially
Andrew H. Fagg: CS 2334: Java Collections Framework 42
TreeSet
•The problem with HashSet is that elements
aren’t ordered in any useful way
• How would you sort data in a hash table?
• LinkedHashSet orders elements by time of entry,
but this often isn’t a useful order
•TreeSet uses a natural ordering (Comparable)
• Can use alternate ordering (Comparator)

Note: we are breaking from the mathematical


notion of set
Andrew H. Fagg: CS 2334: Java Collections Framework 43
How Does TreeSet Work?

•Example brief introduction of Binary Search


Tree
• Tree balancing
•Will see full implementations in CS 2413 Data
Structures

Andrew H. Fagg: CS 2334: Java Collections Framework 44


Abstract Data Type: Map

Stores <key, value> pairs


•Key used to organize data (no duplicates)
• Keys form a proper Set
•Value is the data itself (duplicates allowed)

Andrew H. Fagg: CS 2334: Java Collections Framework 46


Map

Example: In computer gaming, all objects are


stored in a Map <objectID, object>
•Objects are players, furniture, non-playable
characters, etc.

Andrew H. Fagg: CS 2334: Java Collections Framework 47


Map Interface

•Examine methods in API carefully


• How would you get iteration?
•Examine class hierarchy in API
• Lots of implementation options

Andrew H. Fagg: CS 2334: Java Collections Framework 48


Example

•Implement a map that stores and retrieves


names by an identification number
• Use HashMap
•Examine differences in data ordering with
HashMap, TreeMap, LinkedHashMap
• HashMap used a lot in Java!

Andrew H. Fagg: CS 2334: Java Collections Framework 49


Back to the Collections Class

•JCF stores its static methods in one shared


class
•Examine which methods apply to which type
• Why doesn’t Set have sort/reverse?

Andrew H. Fagg: CS 2334: Java Collections Framework 50

You might also like