Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
COMP 103
2014-T2, Lecture 2
JAVA COLLECTIONS LIBRARY
Marcus Frean
School of Engineering and Computer Science, Victoria University of Wellington
TODAY
2
Libraries and code reuse
Java’s Collections Library
ArrayList (our first example)
Interfaces and Classes
Administrivia:
Yesterday’s course outline had two typos:
st (not 9th)
Test will be on August 21
Exam will be 2 hours long (not 3)
Programming with Libraries
3
Modern programs (especially GUI and network)
are too big to build from scratch, so we have to reuse code written by
other people....
Libraries contain code designed for reuse
Java
has a huge number of standard libraries...
Packages,
Java API
which are groups of Classes
The
ecs100 library has some very useful classes (eg. UI)
There are LOTS of other libraries as well
Learning to use libraries is ESSENTIAL
Libraries for COMP103
4
ecs100
Special classes for text/graphical
input and output, especially for GUI
java.util
the Collection classes,
and other utility classes
java.io
Classes for input and output
javax.swing
jawa.awt
Large libraries of classes for GUI
programs
We will use libraries in almost every program
5
Using Libraries
Read the documentation to pick useful library Java API
Import the package or class into your program
import java.util.*;
import ecs100.*;
Read the documentation to identify how to use
Constructors
for making instances
Methods that you can call
Interfaces that you can implement
Use the classes as if they were part of your program
“Standard” Collections
6
Common ways of organizing a collection of values:
some collections...
Bag
Graph
Set
Tree
Map
List
Queue
Stack
Each of these is a different type of collection
Java Collections Library
7
Standard collections (eg. Set, List, Map, etc.) are
implemented for you
Java Collections Library
Code
written by others – for you to use
Collections specified as interfaces
Collection,
Set, List, Queue – are all interfaces
Using collections implies using one of the many concrete
classes that implement these interfaces. Eg. You can use:
ArrayList (a class) which implements List (an interface)....
You have been using ArrayList
8
Part of the Java Collections framework
Stores a LIST of items
a collection of items kept in a particular order
Part of the java.util package
⇒ need
import java.util.*;
at the head of your file
You can make a new ArrayList object, and put items in it
Don’t have to specify its size: Like an infinitely stretchable array
Should specify the type of items
But, you can’t use the [...] notation
You have to call methods to access and assign
8
Using ArrayList: declaring
9
List of students (assume we have a class called Student)
Array:
private static final int maxStudents = 1000;
private Student[ ] students = new Student[maxStudents];
private int count = 0;
ArrayList:
private ArrayList <Student> students = new ArrayList <Student>();
Type of elements in the list is between “<” and “>” after ArrayList
No maximum, no initial size (!), no explicit count
9
Using ArrayList: methods
10
ArrayList has many methods!
returns the number of items in the list
adds an item to the end of the list
inserts an item at index
(moves later items up)
replaces the item at index with item
true if the list contains an item that equals item
returns the item at position index
removes an occurrence of item
removes the item at position index
(both “removes” move the later items down)
set(index, item):
contains(item):
get(index):
remove(item):
remove(index):
You can use the “for each” loop on an ArrayList, as well as for loop
10
size():
add(item):
add(index, item):
TIP: Read Documentation from sidebar of course homepage
11
Using ArrayList
....
private List <Student> students = new ArrayList <Student> ();
Student s = new Student(“Davy Jones”, 300012345);
....
students.add(s);
for(Student st: students)
UI.println(st.toString());
for(int i = students.size()-1; i>=0; i--)
UI.println(students.get(i).toString());
if(students.contains(current)) {
UI.println(current);
students.remove(current);
}
12
Collections
An object that serves as a repository for other
objects (like a “container”)
Type
of Elements (a collection of ….)
Constraints (duplicates? Access: add
anywhere, remove from one end only, get
from top, etc…)
Structure (no/linear/hierarchical)
13
Example
Bag : a example of a collection
Collection
type
Element
type
Type
of Elements
Bag of Students
Structure
No structure/order
Constraints
Duplicates allowed, add/remove
anywhere (no order)
14
Is ArrayList a Collection type then?
Collection
type
Element
type
Type
of Elements
ArrayList of Students
Structure
linear order
Constraints
Duplicates allowed, add/remove
anywhere
actually no! ArrayList is not a Collection type
List is!
ArrayList is just ONE WAY to “do” (implement) a List
• an interface: says what you’re doing
• an implementation (=a class): how you’re doing it
And there’s a hierarchy to interfaces, so we say they “extend” one another
16
Java Collections Library
Interfaces:
abstract
Collection
Classes:
List
Set
unordered, no duplicates
Map
classes:
EnumMap, HashMap, TreeMap,
LinkedHashMap,
WeakHashMap, …
Queue
ordered collection with limited access
(add at one end, remove from other)
Map
classes:
HashSet, TreeSet, EnumSet,
LinkedHashSet,…
ordered collection
Set
classes:
ArrayList, LinkedList, Vector
most general: “a bag”
List
concrete
…
key-value pairs (or mapping)
Specify the Types
Implement the interfaces
advantages and disadvantages
17
Java Interfaces
At the simplest level:
An
interface is a bunch of method signatures with a name.
(Method signature only, no bodies)
At a higher level:
An
interface is an abstract concept that defines:
the
operations that can be done to an object of this type
how it will behave
No concrete details!
No constructors
- can’t make an instance
No fields
- doesn’t say how to store the data
No method bodies.
- doesn’t say how to perform the operations
Details provided by Classes that implement the Interface
Abstract Data Types (ADT)
18
an ADT is a type of data, described at an abstract level:
Specifies the operations that can be done to an object of this type
Outlines how it will behave
A Java Interface corresponds to an Abstract Data Type
Specifies what methods can be called on objects of this type
(specifies name, parameters and types, and type of return value)
Behaviour of methods is only given in comments
(but cannot be enforced)
No constructors
No fields
No method bodies.
public interface Set {
- can’t make an instance: new Set()
- doesn’t say how to store the data
- doesn’t say how to perform the operations
public void add(??? item);
/*…description…*/
public void remove(??? item);
/*…description…*/
public boolean contains(??? item);
/*…description…*/
…
// (plus lots more methods in the Java Set interface)
declaring a List
19
Earlier, we declared as ArrayList like this:
private ArrayList <Student> students = new ArrayList <Student>();
BETTER / NOW: declare as an instance of the interface List:
private List <Student> students = new ArrayList <Student>();
19
Summary
20
Libraries
Collections
Interfaces – correspond to ADTs. No concrete details.
Eg. Collection, List, Set…
ArrayList – example of a class that implements an interface
(List) from the Java Collections Library.
What’s Next?
21
How do we define the type of element a collection contains?
Constructing a new object of an appropriate collection class.
What can we do with them?
What methods can we call on them?
How do we iterate down all the elements of a collection?
How do we choose the right collection interface and class?
What if there isn’t the right class for what we want?