3. www.SunilOS.com 3
Collections Framework
A collections framework is a unified architecture
for representing and manipulating collections.
It consists of
o Interfaces – Collection, Set, List, Queue
o Concrete Classes – ArrayList, Hashmap, HashSet,
etc.
o Algorithm - searching and sorting
5. www.SunilOS.com 5
Collection Interfaces
Collection-A collection represents a group of objects known as
its elements.
Set - cannot contain duplicate elements.
List- ordered collection, can contain duplicate elements.
Queue - holds multiple elements prior to processing. a Queue
provides additional insertion, extraction, and inspection
operations.
Map - an object that maps keys to values. A Map cannot contain
duplicate keys.
SortedSet - a Set that maintains its elements in ascending
order.
SortedMap - a Map that maintains its mappings in ascending
key order.
6. www.SunilOS.com 6
List by regular array
public static void main(String[] args) {
o String[] names = new String[5];
o for(int i=0;i<names.length; i++){
• names[i]= " No # " + i;
o }
o System.out.println("Names =" + names.length);
}
Disadvantages:
o All elements should be of same type, here it is String.
o Primitive data type arrays can be defined.
o Array size is Fixed. Defined at the time of creation.
7. www.SunilOS.com 7
List by Collection framework
public static void main(String[] args) {
o ArrayList names = new ArrayList();
o for(int i=0;i<10; i++){
• names.add(" No # " + i);
o }
o System.out.println("Names =" + names.size());
o Object o = names.get(0);
o String name = (String) o;
o //String name = (String) names.get(0);
o System.out.println(“ First Name is " + name);
}
Advantages:
o Unlimited size,no need to define array size at the time of creation.
o Add object of any class, in other words any object in Java.
o Add only objects but NOT primitive data types.
8. www.SunilOS.com 8
Interface Collection
add(o) Add a new element
addAll(c) Add a collection
clear() Remove all elements
contains(o) Membership checking
containsAll(c) Inclusion checking
isEmpty() Whether it is empty
iterator() Return an iterator
remove(o) Remove an element
removeAll(c) Remove a collection
retainAll(c) Keep the elements
size() The number of elements
9. www.SunilOS.com 9
Interface List
add(i,o) Inserts o at position i.
get(i) Returns the i-th element.
remove(i) Removes the i-th element.
set(i,o) Replaces the i-th element with o.
indexOf(o) Searches object from beginning.
lastIndexOf(o) Searches object from end.
sublist(i, noOfElements) Returns sublist.
List allows multiple NULL values to be inserted.
11. www.SunilOS.com 11
Interface Queue
element(): Retrieves, but does not remove the head of this queue.
offer(E o): Inserts the specified element into this queue, if possible. Returns
true if inserted.
peek(): Retrieves, but does not remove the head of this queue, returning null
if this queue is empty.
poll(): Retrieves and removes the head of this queue, or null if this queue is
empty.
remove(): Retrieves and removes the head of this queue.
Throws exception Returns special value
Insert add(e) offer(e)
Remove remove() poll()
Examine element() peek()
12. www.SunilOS.com 12
Interface Map
clear() Removes all mappings.
containsKey(k) Checks membership of Key.
containsValue(v) Checks membership of Value.
entrySet() Set of key-value pairs.
get(k) Returns the value associated with
key.
isEmpty() Whether it is empty.
keySet() Returns Set of keys.
put(k,v) Inserts Key and Value pair.
remove(k) Removes the mapping of Key.
size() Returns size of Map.
values() Returns the List of values.
14. www.SunilOS.com 14
Concrete Collections
HashSet Set hash table
TreeSet SortedSet balanced binary tree
ArrayList List resizable-array
LinkedList List linked list
Vector List resizable-array
HashMap Map hash table
TreeMap SortedMap balanced binary tree
Hashtable Map hash table
15. www.SunilOS.com 15
ArrayList implements List
public static void main(String[] args) {
o ArrayList v = new ArrayList();
o v.add(“One");
o v.add(“Two");
o v.add(“Three");
o Integer i = new Integer(4);
o v.add(i);
o Integer value = (Integer) v.get(3);
o System.out.println(“Index#3 value = " + value);
16. www.SunilOS.com 16
Vector implements List
public static void main(String[] args) {
o Vector v = new Vector();
o v.add(“One");
o v.add(“Two");
o v.add(“Three");
o Integer i = new Integer(4);
o v.add(i);
o Integer value = (Integer) v.get(3);
o System.out.println(“Index#3 value = " + value);
17. www.SunilOS.com 17
ArrayList – read all elements
public static void main(String[] args) {
o ArrayList v = new ArrayList();
o v.add(“One");
o …..
o int size = v.size();
o for (int j = 0; j < size; j++) {
o System.out.println(j + " : " + v.get(j));
o }
An object is converted into string by o.toString() method.
toString() method is defined in Object class.
19. www.SunilOS.com 19
ArrayList – read all elements
public static void main(String[] args) {
o ArrayList v = new ArrayList();
o v.add("Jay");
o …..
o Iterator it = v.iterator(); //Gets an iterator
o while(it.hasNext())
• Object o = it.next(); //Gets next element
• System.out.println(o);
• //System.out.println(it.next());
o }
}
21. www.SunilOS.com 21
Iterator
Set s = new TreeSet();
s.add(“123”); ..
Iterator it = s.iterator();
Vector v = new Vector();
v.add(“123”); ..
Iterator it = v.iterator();
22. www.SunilOS.com 22
Map – Hashtable and HashMap
public static void main(String[] args) {
o HashMap m = new HashMap();
o m.put("RN1001", 890);
o m.put("RN1002",900);
o m.put("RN1003",780);
o Integer i = (Integer)m.get("RN1002");
o Set keys = m.keySet();
o Collection vals = m.values()
24. HashMap vs Hashtable
HashMap
Asynchronous.
Not Thread Safe.
Permits NULL values as
Key and Value.
High performance.
Used in single-user
application.
Hashtable
Synchronous
Thread Safe
Does not permit NULLs
Slow performance
Used in multi-user
application.
www.SunilOS.com 24
25. ArrayList vs Vector
ArrayList
Asynchronous.
Not Thread Safe.
High performance.
Grows by half of its size.
Used in single-user
application.
Vector
Synchronous
Thread Safe
Slow performance
Double the size when grow
Used in multi-user
application.
www.SunilOS.com 25
Grows by half of its size Grows by double of its size
+ +
26. www.SunilOS.com 26
java.util.Enumeration
Vector v = new Vector();
Enumeration e = v.elements()
while (e.hasMoreElements()) {
System.out.println(e.nextElement());
}
Iterator and Enumeration both are same but Iterator has
one additional method ‘remove()’.
Enumeration can be used with only historical classes
Vector, Hashtable, etc.
27. Iterator vs Enumeration
Iterator
It is fail-fast.
Can remove an object.
Enumeration
Not fail-fast
Can’t remove an object
Available with historical
classes Vector, Hashtable,
Stack, etc.
www.SunilOS.com 27
28. Fail-fast
If the collection is structurally modified at any
time after the Iterator is created, in any way
except through the Iterator's own remove()
method, then Iterator will throw the following
exception:
oConcurrentModificationException.
www.SunilOS.com 28
29. www.SunilOS.com 29
Instantiate V/AL/HT/HM
Vector v = new Vector(); //Default Capacity 10
Vector v = new Vector(20); //Initial capacity 20
Vector v = new Vector(20,15); //Initial capacity 20 and then
increase by 15
ArrayList al = new ArrayList(); //Default Capacity 10
ArrayList al = new ArrayList(20); //Initial Capacity
Hashtable ht = new Hashtable();
Hashtable ht = new Hashtable(20);
int i = al.capacity(); //Returns the current capacity of this vector
int s = al.size(); //Returns the number of components in this
vector
30. www.SunilOS.com 30
Synchronize Collection
Non-synchronized collections can be synchronized by
Collections class using following methods:
o Collection c = Collections.synchronizedCollection(c);
o List syncList = Collections.synchronizedList(al);
o Set syncSet = Collections.synchronizedSet(s);
o SortedSet syncSet = Collections.synchronizedSortedSet(s);
o Map syncMap = Collections.synchronizedMap(m);
o TreeMap syncMap = Collections.synchronizedTreeMap(m);
31. Method equals() and hashCode()
Both methods are found in Object class.
They play imported role in identification and
searching of elements in Collections.
www.SunilOS.com 31
33. Overriding equals() and hashCode()
equals() is used to search or remove an object in a
Collection.
hashCode() returns an integer that uniquely identifies an
object in Hash Collections.
If two objects are equals by equals() method then their
hash code produced by hashCode() method must be
same.
If equals() method is overridden then it is recommended
to override hashCode() method to maintain uniqueness
on an object in the collection.
www.SunilOS.com 33
34. Marksheet: equals() and hashCode()
Here are overridden methods of Marksheet class
public boolean equals(Object o) {
if (o == null) return false;
if (!(o instanceof Marksheet)) return false;
Marksheet other = (Marksheet) o;
return this.getRollNo().equals(other.getRollNo());
}
public int hashCode() {
return rollNo.hashCode();
}
www.SunilOS.com 34
35. Sorting
Framework provides two interfaces to sort the
collection.
Comparable and Comparator interfaces are used to
compare same type of objects.
Collections.sort() method uses either interface to sort
elements of a collection.
Sortable Class can implement Comparable interface
and provides natural ordering using primary key attribute.
Sortable Class may have multiple Comparators,
comparing on different attributes.
www.SunilOS.com 35
36. Sorting ( Cont. )
A collection storing objects of Sortable Class, can be
sorted by Collections.sort() method.
// Sorts using Comparable
Collections.sort(c)
// Sorts using Comparator object
Collections.sort(c, comparator)
www.SunilOS.com 36
37. Comparable Interface
It does natural ordering.
It uses primary key to order collection.
public int compareTo(Marksheet m) {
return rollNo.compareTo(m.rollNo);
}
ArrayList marksheets = new ArrayList();
marksheets.add(new Marksheet());
marksheets.add(new Marksheet());
marksheets.add(new Marksheet());
Collections.sort(marksheets);
www.SunilOS.com 37
:Marksheet
-rollNo:String
-name : String
-physics :int
…
+compareTo(Marksheet m):int
+getRollNo():String
+setRollNo()
+getPhysics ():int
+setPhysics ()
+getChemistry():int
+setChemistry()
+…..
:Comparable
38. Comparator Interface
One class may have multiple comparators.
Number of comparators are depending on
number of attributes to be sorted.
If Marskheets are sorted ascending by ‘name’
attribute then OrderByName comparator is
created.
If Marskheets are sorted by ascending and
descending by ‘name’ attribute then
OrderByNameAsc and OrderByNameDesc
comparators are created.
More attributes are required to be sorted,
create more comparators.
www.SunilOS.com 38
:OrderByName
+compare(Marksheet m1,
Marksheet m2) : int
:Comparator
39. Comparator Interface ( cont.)
class OrderByName implements Comparator<Marksheet>{
public int compare(Marksheet m1,Marksheet m2){
return m1.getName().compareTo(m2.getName());
}
}
class OrderByMaths implements Comparator<Marksheet>{
public int compare(Marksheet m1,Marksheet m2){
return m1.getMaths() - m2.getMaths());
}
}
Collections.sort(marksheets, new OrderByName());
Collections.sort(marksheets, new OrderByMaths());
www.SunilOS.com 39
40. Return value ( -ve, 0 , +ve )
Methods compare() and compareTo(), both
return integer value that can be –ve, 0 or +ve.
o -ve indicates current (first) object is smaller than
second one.
o 0 indicates both are equals.
o +ve indicates current (first) object is greater than
second one.
www.SunilOS.com 40
46. www.SunilOS.com 46
Wrapper Primitive
double d = 5.5;
Double dObj = new Double(d);
double d1 = dObj.doubleValue();
char c = 'A';
Char cObj = new Char(c);
char c1 = cObj.charValue();
boolean b = true;
Boolean bObj = new Boolean(b);
boolean b1 = bObj.booleanValue();
47. www.SunilOS.com 47
Autoboxing UnBoxing
//Old
int i = 5;
Integer iObj = new Integer(i);
ArrayList l = new ArrayList();
l.add(iObj);
int k = iObj.intValue();
//New Autoboxing/UnBoxing
Integer iObj = i; //Autoboxing
int k = iObj; //UnBoxing
l.add(k); //Autoboxing
48. Disclaimer
This is an educational presentation to enhance the
skill of computer science students.
This presentation is available for free to computer
science students.
Some internet images from different URLs are
used in this presentation to simplify technical
examples and correlate examples with the real
world.
We are grateful to owners of these URLs and
pictures.
www.SunilOS.com 48