SlideShare a Scribd company logo
The Collection Framework
By,
Lakshmi R
Asst. Professor
Dept. of ISE
Collection – Group of objects
Collection Framework –
• Classes and Interfaces that manage collections.
• Provides an architecture to store and manipulate the group of objects.
• Standardizes the way in which group of objects that are handled by
your programs.
Overview
30-12-2017 2Lakshmi R, Asst. Professor, Dept. of ISE
30-12-2017 3Lakshmi R, Asst. Professor, Dept. of ISE
• Performance - efficient implementation of data structures like lists, array lists,
trees, set, hash tables and many more. (You don’t have to code manually)
• Interoperability – different types of collections wok in similar manner
• Easy – Extension and Adaption. Collections Framework is built upon a set of
standard interfaces
• Integration of standard arrays to Collection Framework.
• Algorithms – Defined as static methods within the Collection class
• Iterator interface – Standard way of accessing the elements within a collection.
• Each collection implements Iterator. Eg: Code that cycles through a set can be used to cycle
through a list.
Design Goal
30-12-2017 4Lakshmi R, Asst. Professor, Dept. of ISE
The Collection Interfaces
30-12-2017 5Lakshmi R, Asst. Professor, Dept. of ISE
The Collection Interface
• It is a generic interface.
Declaration :
interface Collection<E>
• Where E represents the type of objects the collection can
hold.
• Collection extends the Iterable interface. (Hence, it can be
cycled through for-each version of for loop)
30-12-2017 6Lakshmi R, Asst. Professor, Dept. of ISE
30-12-2017 7Lakshmi R, Asst. Professor, Dept. of ISE
30-12-2017 8Lakshmi R, Asst. Professor, Dept. of ISE
The List Interface
• It is a generic interface.
• List extends Collection interface.
Declaration :
interface List<E>
• Where E represents the type of objects the list can hold.
• List may contain duplicate elements.
30-12-2017 9Lakshmi R, Asst. Professor, Dept. of ISE
30-12-2017 10Lakshmi R, Asst. Professor, Dept. of ISE
The Set Interface
• It is a generic interface.
• Set extends Collection interface.
Declaration :
interface Set<E>
• Where E represents the type of objects the set can hold.
• Set doesn’t contain duplicate elements.
• No methods of its own.
30-12-2017 11Lakshmi R, Asst. Professor, Dept. of ISE
The SortedSet Interface
• It is a generic interface.
• Set extends Set interface.
Declaration :
interface SortedSet<E>
• Where E represents the type of objects the SortedSet can hold.
• Set doesn’t contain duplicate elements.
• Declares set in ascending order.
30-12-2017 12Lakshmi R, Asst. Professor, Dept. of ISE
30-12-2017 13Lakshmi R, Asst. Professor, Dept. of ISE
The Queue Interface
• Queue is a generic interface
• The Queue interface extends Collection
• It declares the behavior of a queue (first-in, first-out list)
Declaration :
interface Queue<E>
30-12-2017 14Lakshmi R, Asst. Professor, Dept. of ISE
30-12-2017 15Lakshmi R, Asst. Professor, Dept. of ISE
The Deque Interface
• It extends Queue and declares the behavior of a double-ended queue
• Double-ended queues can function as standard, first-in, first-out
queues or as last-in, first-out stacks.
Declaration :
interface Deque<E>
30-12-2017 16Lakshmi R, Asst. Professor, Dept. of ISE
30-12-2017 17Lakshmi R, Asst. Professor, Dept. of ISE
30-12-2017 18Lakshmi R, Asst. Professor, Dept. of ISE
The Collection Classes
30-12-2017 19Lakshmi R, Asst. Professor, Dept. of ISE
The ArrayList Class
• The ArrayList class extends AbstractList and implements the List
interface
Declaration :
Class ArrayList<E>
Constructors:
ArrayList( ) – Empty array list
ArrayList(Collection<? extends E> c)
ArrayList(int capacity)
30-12-2017 20Lakshmi R, Asst. Professor, Dept. of ISE
// Demonstrate ArrayList.
import java.util.*;
class ArrayListDemo {
public static void main(String args[]) {
// Create an array list.
ArrayList<String> al = new ArrayList<String>();
System.out.println("Initial size of al: " + al.size());
// Add elements to the array list.
al.add("C");
al.add("A");
al.add("E");
al.add("B");
al.add("D");
al.add("F");
30-12-2017 21Lakshmi R, Asst. Professor, Dept. of ISE
al.add(1, "A2");
System.out.println("Size of al after additions: " + al.size());
// Display the array list.
System.out.println("Contents of al: " + al);
// Remove elements from the array list.
al.remove("F");
al.remove(2);
System.out.println("Size of al after deletions: " +al.size());
System.out.println("Contents of al: " + al); } }
The output from this program is shown here:
Initial size of al: 0
Size of al after additions: 7
Contents of al: [C, A2, A, E, B, D, F]
Size of al after deletions: 5
Contents of al: [C, A2, E, B, D]
30-12-2017 22Lakshmi R, Asst. Professor, Dept. of ISE
Obtaining an Array from an ArrayList
// Convert an ArrayList into an array.
import java.util.*;
class ArrayListToArray {
public static void main(String args[]) {
// Create an array list.
ArrayList<Integer> al = new ArrayList<Integer>();
// Add elements to the array list.
al.add(1);
al.add(2);
al.add(3);
al.add(4);
30-12-2017 23Lakshmi R, Asst. Professor, Dept. of ISE
System.out.println("Contents of al: " + al);
// Get the array.
Integer ia[] = new Integer[al.size()];
ia = al.toArray(ia);
int sum = 0;
// Sum the array.
for(int i : ia) sum += i;
System.out.println("Sum is: " + sum);
}
}
The output from the program is shown here:
Contents of al: [1, 2, 3, 4]
Sum is: 10
30-12-2017 24Lakshmi R, Asst. Professor, Dept. of ISE
The LinkedList Class
• The LinkedList class extends AbstractSequentialList
• Implements the List, Deque, and Queue interfaces
• LinkedList is a generic class
Declaration :
Class LinkedList<E>
Constructors:
LinkedList( ) – Empty linked list
LinkedList(Collection<? extends E> c)
30-12-2017 25Lakshmi R, Asst. Professor, Dept. of ISE
// Demonstrate LinkedList.
import java.util.*;
class LinkedListDemo {
public static void main(String args[]) {
// Create a linked list.
LinkedList<String> ll = new LinkedList<String>();
// Add elements to the linked list.
ll.add("F");
ll.add("B");
ll.add("D");
ll.add("E");
ll.add("C");
ll.addLast("Z");
ll.addFirst("A");
ll.add(1, "A2");
30-12-2017 26Lakshmi R, Asst. Professor, Dept. of ISE
// Remove elements from the linked list.
ll.remove("F");
ll.remove(2);
System.out.println("Contents of ll after deletion: "+ ll);
// Remove first and last elements.
ll.removeFirst();
ll.removeLast();
System.out.println("ll after deleting first and last: "+ ll);
// Get and set a value.
String val = ll.get(2);
ll.set(2, val + " Changed");
System.out.println("ll after change: " + ll);
}
}
30-12-2017 27Lakshmi R, Asst. Professor, Dept. of ISE
The output from this program is shown here:
Original contents of ll: [A, A2, F, B, D, E, C, Z]
Contents of ll after deletion: [A, A2, D, E, C, Z]
ll after deleting first and last: [A2, D, E, C]
ll after change: [A2, D, E Changed, C]
30-12-2017 28Lakshmi R, Asst. Professor, Dept. of ISE
The HashSet Class
• HashSet extends AbstractSet and implements the Set interface
Declaration
class HashSet<E>
Constructors
HashSet( ) – Default size 16
HashSet(Collection<? extends E> c)
HashSet(int capacity)
HashSet(int capacity, float fillRatio)
30-12-2017 29Lakshmi R, Asst. Professor, Dept. of ISE
// Demonstrate HashSet.
import java.util.*;
class HashSetDemo {
public static void main(String args[]) {
// Create a hash set.
HashSet<String> hs = new HashSet<String>();
// Add elements to the hash set.
hs.add("B");
hs.add("A");
hs.add("D");
hs.add("E");
hs.add("C");
hs.add("F");
System.out.println(hs);
}
}
The following is the output from this program:
[D, A, F, C, B, E]
30-12-2017 30Lakshmi R, Asst. Professor, Dept. of ISE
The LinkedHashSet Class
• The LinkedHashSet class extends HashSet
Declaration
class LinkedHashSet<E>
• Uses linked list to store hash set.
30-12-2017 31Lakshmi R, Asst. Professor, Dept. of ISE
The TreeSet Class
Declaration:
class TreeSet<E>
TreeSet( )
TreeSet(Collection<? extends E> c)
TreeSet(Comparator<? super E> comp)
TreeSet(SortedSet<E> ss)
30-12-2017 32Lakshmi R, Asst. Professor, Dept. of ISE
// Demonstrate TreeSet.
import java.util.*;
class TreeSetDemo {
public static void main(String args[]) {
// Create a tree set.
TreeSet<String> ts = new TreeSet<String>();
// Add elements to the tree set.
ts.add("C");
ts.add("A");
ts.add("B");
ts.add("E");
ts.add("F");
ts.add("D");
System.out.println(ts);
}
}
The output from this program is shown here:
[A, B, C, D, E, F]
30-12-2017 33Lakshmi R, Asst. Professor, Dept. of ISE
The PriorityQueue Class
• PriorityQueue extends AbstractQueue and implements the Queue
interface
Declaration
class PriorityQueue<E>
Constructors
PriorityQueue( ) – Starting Capacity is 11
PriorityQueue(int capacity)
PriorityQueue(int capacity, Comparator<? super E> comp)
PriorityQueue(Collection<? extends E> c)
PriorityQueue(PriorityQueue<? extends E> c)
PriorityQueue(SortedSet<? extends E> c)
30-12-2017 34Lakshmi R, Asst. Professor, Dept. of ISE
The ArrayDeque Class
• It extends AbstractCollection and implements the Deque interface
Declaration
class ArrayDeque<E>
Constuctors:
ArrayDeque( ) – Starting Capacity 16
ArrayDeque(int size)
ArrayDeque(Collection<? extends E> c)
30-12-2017 35Lakshmi R, Asst. Professor, Dept. of ISE
Accessing a Collection via an Iterator
interface Iterator<E> - Single Directional Traversal
interface ListIterator<E> - Bidirectional Traversal
30-12-2017 36Lakshmi R, Asst. Professor, Dept. of ISE
30-12-2017 37Lakshmi R, Asst. Professor, Dept. of ISE
// Demonstrate iterators.
import java.util.*;
class IteratorDemo {
public static void main(String args[]) {
// Create an array list.
ArrayList<String> al = new ArrayList<String>();
// Add elements to the array list.
al.add("C");
al.add("A");
al.add("E");
al.add("B");
al.add("D");
al.add("F");
30-12-2017 38Lakshmi R, Asst. Professor, Dept. of ISE
// Use iterator to display contents of al.
System.out.print("Original contents of al: ");
Iterator<String> itr = al.iterator();
while(itr.hasNext()) {
String element = itr.next();
System.out.print(element + " ");
}
System.out.println();
// Modify objects being iterated.
ListIterator<String> litr = al.listIterator();
while(litr.hasNext()) {
String element = litr.next();
litr.set(element + "+");
}
30-12-2017 39Lakshmi R, Asst. Professor, Dept. of ISE
System.out.print("Modified contents of al: ");
itr = al.iterator();
while(itr.hasNext()) {
String element = itr.next();
System.out.print(element + " ");
}
System.out.println();
// Now, display the list backwards.
System.out.print("Modified list backwards: ");
while(litr.hasPrevious()) {
String element = litr.previous();
System.out.print(element + " ");
}
System.out.println();
}
}
The output is shown here:
Original contents of al: C A E B D F
Modified contents of al: C+ A+ E+ B+ D+ F+
Modified list backwards: F+ D+ B+ E+ A+ C+
30-12-2017 40Lakshmi R, Asst. Professor, Dept. of ISE
The For-Each Alternative to Iterators
// Use the for-each for loop to cycle through a collection.
import java.util.*;
class ForEachDemo {
public static void main(String args[]) {
// Create an array list for integers.
ArrayList<Integer> vals = new ArrayList<Integer>();
// Add values to the array list.
vals.add(1);
vals.add(2);
vals.add(3);
vals.add(4);
vals.add(5);
30-12-2017 41Lakshmi R, Asst. Professor, Dept. of ISE
// Use for loop to display the values.
System.out.print("Original contents of vals: ");
for(int v : vals)
System.out.print(v + " ");
System.out.println();
// Now, sum the values by using a for loop.
int sum = 0;
for(int v : vals)
sum += v;
System.out.println("Sum of values: " + sum);
}
}
The output from the program is shown here:
Original contents of vals: 1 2 3 4 5
Sum of values: 15
30-12-2017 42Lakshmi R, Asst. Professor, Dept. of ISE
Storing User-Defined Classes in Collections
// A simple mailing list example.
import java.util.*;
class Address {
private String name;
private String street;
private String city;
private String state;
private String code;
Address(String n, String s, String c,
String st, String cd) {
name = n;
street = s;
city = c;
state = st;
code = cd;
}
public String toString() {
return name + "n" + street + "n" +
city + " " + state + " " + code; } }30-12-2017 43Lakshmi R, Asst. Professor, Dept. of ISE
class MailList {
public static void main(String args[]) {
LinkedList<Address> ml = new LinkedList<Address>();
// Add elements to the linked list.
ml.add(new Address("J.W. West", "11 Oak Ave","Urbana", "IL", "61801"));
ml.add(new Address("Ralph Baker", "1142 Maple Lane","Mahomet", "IL",
"61853"));
ml.add(new Address("Tom Carlton", "867 Elm St","Champaign", "IL",61820"));
// Display the mailing list.
for(Address element : ml)
System.out.println(element + "n");
System.out.println();
}
}
30-12-2017 44Lakshmi R, Asst. Professor, Dept. of ISE
Working with Maps
• A map is an object that stores associations between keys and values,
or key/value pairs.
• Given a key, you can find its value. Both keys and values are objects.
• The keys must be unique, but the values may be duplicated.
30-12-2017 45Lakshmi R, Asst. Professor, Dept. of ISE
The Map Interface
• The Map interface maps unique keys to values. A key is an object that
you use to retrieve a value at a later date.
• Given a key and a value, you can store the value in a Map object.
• After the value is stored, you can retrieve it by using its key.
Declaration:
interface Map<K, V>
30-12-2017 46Lakshmi R, Asst. Professor, Dept. of ISE
30-12-2017 47Lakshmi R, Asst. Professor, Dept. of ISE
The SortedMap Interface
• The SortedMap interface extends Map.
• It ensures that the entries are maintained in ascending order based
on the keys.
• SortedMap is generic
Declaration
interface SortedMap<K, V>
30-12-2017 48Lakshmi R, Asst. Professor, Dept. of ISE
30-12-2017 49Lakshmi R, Asst. Professor, Dept. of ISE
The Map.Entry Interface
• The Map.Entry interface enables you to work with a map entry.
30-12-2017 50Lakshmi R, Asst. Professor, Dept. of ISE
The Map Classes
The HashMap Class
HashMap is a generic class that has this declaration:
class HashMap<K, V>
Constructors:
HashMap( )
HashMap(Map<? extends K, ? extends V> m)
HashMap(int capacity)
HashMap(int capacity, float fillRatio)
30-12-2017 51Lakshmi R, Asst. Professor, Dept. of ISE
import java.util.*;
class HashMapDemo {
public static void main(String args[]) {
// Create a hash map.
HashMap<String, Double> hm = new HashMap<String, Double>();
// Put elements to the map
hm.put("John Doe", new Double(3434.34));
hm.put("Tom Smith", new Double(123.22));
hm.put("Jane Baker", new Double(1378.00));
hm.put("Tod Hall", new Double(99.22));
hm.put("Ralph Smith", new Double(-19.08));
30-12-2017 52Lakshmi R, Asst. Professor, Dept. of ISE
// Get a set of the entries.
Set<Map.Entry<String, Double>> set = hm.entrySet();
// Display the set.
for(Map.Entry<String, Double> me : set) {
System.out.print(me.getKey() + ": ");
System.out.println(me.getValue());
}
System.out.println();
// Deposit 1000 into John Doe's account.
double balance = hm.get("John Doe");
hm.put("John Doe", balance + 1000);
System.out.println("John Doe's new balance: " +
hm.get("John Doe"));
}
}
30-12-2017 53Lakshmi R, Asst. Professor, Dept. of ISE
The TreeMap Class
Declaration:
class TreeMap<K, V>
Constructors:
TreeMap( )
TreeMap(Comparator<? super K> comp)
TreeMap(Map<? extends K, ? extends V> m)
TreeMap(SortedMap<K, ? extends V> sm)
30-12-2017 54Lakshmi R, Asst. Professor, Dept. of ISE
import java.util.*;
class TreeMapDemo {
public static void main(String args[]) {
// Create a tree map.
TreeMap<String, Double> tm = new TreeMap<String, Double>();
// Put elements to the map.
tm.put("John Doe", new Double(3434.34));
tm.put("Tom Smith", new Double(123.22));
tm.put("Jane Baker", new Double(1378.00));
tm.put("Tod Hall", new Double(99.22));
tm.put("Ralph Smith", new Double(-19.08));
30-12-2017 55Lakshmi R, Asst. Professor, Dept. of ISE
// Get a set of the entries.
Set<Map.Entry<String, Double>> set = tm.entrySet();
// Display the elements.
for(Map.Entry<String, Double> me : set) {
System.out.print(me.getKey() + ": ");
System.out.println(me.getValue());
}
System.out.println();
// Deposit 1000 into John Doe's account.
double balance = tm.get("John Doe");
tm.put("John Doe", balance + 1000);
System.out.println("John Doe's new balance: " +
tm.get("John Doe"));
}
} 30-12-2017 56Lakshmi R, Asst. Professor, Dept. of ISE
Using Comparator
• Java Comparator interface is used to order the objects of user-
defined class.
• A comparator object is capable of comparing two objects of two
different classes
Methods:
int compare(T obj1, T obj2)
boolean equals(Object obj)
30-12-2017 57Lakshmi R, Asst. Professor, Dept. of ISE
// Use a custom comparator.
import java.util.*;
// A reverse comparator for strings.
class MyComp implements Comparator<String> {
public int compare(String a, String b) {
String aStr, bStr;
aStr = a;
bStr = b;
// Reverse the comparison.
return bStr.compareTo(aStr);
}
// No need to override equals.
}
30-12-2017 58Lakshmi R, Asst. Professor, Dept. of ISE
class CompDemo {
public static void main(String args[]) {
// Create a tree set.
TreeSet<String> ts = new TreeSet<String>(new
MyComp());
// Add elements to the tree set.
ts.add("C");
ts.add("A");
ts.add("B");
ts.add("E");
ts.add("F");
ts.add("D");
// Display the elements.
for(String element : ts)
System.out.print(element + " ");
System.out.println(); } }
As the following output shows, the tree
is now stored in reverse order:
F E D C B A
30-12-2017 59Lakshmi R, Asst. Professor, Dept. of ISE
class Arrays
• It provides various methods that are useful when working with arrays
• These methods help bridge the gap between collections and arrays
asList( ) method – it returns List view of an array
static <T> List asList(T ... array)
Here, array is the array that contains the data.
30-12-2017 60Lakshmi R, Asst. Professor, Dept. of ISE
Methods defined in Arrays
• The binarySearch( ) method
• The copyOf() method
• The copyOfRange( ) method
• The equals( ) method
• The fill( ) method
• The sort( ) method
30-12-2017 61Lakshmi R, Asst. Professor, Dept. of ISE
The binarySearch( ) method – various forms
• On successful search, it returns position of the key element in specified
array. Otherwise returns negative value.
static int binarySearch(byte array[ ], byte value)
static int binarySearch(char array[ ], char value)
static int binarySearch(double array[ ], double value)
static int binarySearch(float array[ ], float value)
static int binarySearch(int array[ ], int value)
static int binarySearch(long array[ ], long value)
static int binarySearch(short array[ ], short value)
static int binarySearch(Object array[ ], Object value)
static <T> int binarySearch(T[ ] array, T value, Comparator<? super T> c)
30-12-2017 62Lakshmi R, Asst. Professor, Dept. of ISE
The copyOf() method – various forms
• It returns a copy of an array.
• The original array is specified by source and the length of the copy is
specified by len.
• If the copy is longer than source, then
• the copy is padded with zeroes for numeric arrays
• nulls for object arrays
• false for boolean arrays
• If the copy is shorter than source, then the copy is truncated
Various forms:
static boolean[ ] copyOf(boolean[ ] source, int len)
static byte[ ] copyOf(byte[ ] source, int len)
static char[ ] copyOf(char[ ] source, int len)
30-12-2017 63Lakshmi R, Asst. Professor, Dept. of ISE
static double[ ] copyOf(double[ ] source, int len)
static float[ ] copyOf(float[ ] source, int len)
static int[ ] copyOf(int[ ] source, int len)
static long[ ] copyOf(long[ ] source, int len)
static short[ ] copyOf(short[ ] source, int len)
static <T> T[ ] copyOf(T[ ] source, int len)
static <T,U> T[ ] copyOf(U[ ] source, int len, Class<? extends T[ ]> resultT)
• the type of resultT becomes the type of the array returned.
30-12-2017 64Lakshmi R, Asst. Professor, Dept. of ISE
The copyOfRange( ) method – various forms
static boolean[ ] copyOfRange(boolean[ ] source, int start, int end)
static byte[ ] copyOfRange(byte[ ] source, int start, int end)
static char[ ] copyOfRange(char[ ] source, int start, int end)
static double[ ] copyOfRange(double[ ] source, int start, int end)
static float[ ] copyOfRange(float[ ] source, int start, int end)
static int[ ] copyOfRange(int[ ] source, int start, int end)
static long[ ] copyOfRange(long[ ] source, int start, int end)
static short[ ] copyOfRange(short[ ] source, int start, int end)
static <T> T[ ] copyOfRange(T[ ] source, int start, int end)
static <T,U> T[ ] copyOfRange(U[ ] source, int start, int end, Class<? extends T[ ]>
resultT)
30-12-2017 65Lakshmi R, Asst. Professor, Dept. of ISE
The equals( ) method
• returns true if two arrays are equivalent. Otherwise, it returns false.
static boolean equals(boolean array1[ ], boolean array2[ ])
static boolean equals(byte array1[ ], byte array2[ ])
static boolean equals(char array1[ ], char array2[ ])
static boolean equals(double array1[ ], double array2[ ])
static boolean equals(float array1[ ], float array2[ ])
static boolean equals(int array1[ ], int array2[ ])
static boolean equals(long array1[ ], long array2[ ])
static boolean equals(short array1[ ], short array2[ ])
static boolean equals(Object array1[ ], Object array2[ ])
30-12-2017 66Lakshmi R, Asst. Professor, Dept. of ISE
The fill( ) method – Version 1
• Assigns a value to all elements in an array
• It fills an array with a specified value
static void fill(boolean array[ ], boolean value)
static void fill(byte array[ ], byte value)
static void fill(char array[ ], char value)
static void fill(double array[ ], double value)
static void fill(float array[ ], float value)
static void fill(int array[ ], int value)
static void fill(long array[ ], long value)
static void fill(short array[ ], short value)
static void fill(Object array[ ], Object value)
30-12-2017 67Lakshmi R, Asst. Professor, Dept. of ISE
The fill( ) method – Version 2
• assigns a value to a subset of an array
static void fill(boolean array[ ], int start, int end, boolean value)
static void fill(byte array[ ], int start, int end, byte value)
static void fill(char array[ ], int start, int end, char value)
static void fill(double array[ ], int start, int end, double value)
static void fill(float array[ ], int start, int end, float value)
static void fill(int array[ ], int start, int end, int value)
static void fill(long array[ ], int start, int end, long value)
static void fill(short array[ ], int start, int end, short value)
static void fill(Object array[ ], int start, int end, Object value)
30-12-2017 68Lakshmi R, Asst. Professor, Dept. of ISE
The sort( ) method – version 1
• Sorts an array so that it is arranged in ascending order.
• It sorts an entire array
static void sort(byte array[ ])
static void sort(char array[ ])
static void sort(double array[ ])
static void sort(float array[ ])
static void sort(int array[ ])
static void sort(long array[ ])
static void sort(short array[ ])
static void sort(Object array[ ])
static <T> void sort(T array[ ], Comparator<? super T> c)
30-12-2017 69Lakshmi R, Asst. Professor, Dept. of ISE
The sort( ) method – version 2
• Enables you to specify a range within an array that you want to sort.
static void sort(byte array[ ], int start, int end)
static void sort(char array[ ], int start, int end)
static void sort(double array[ ], int start, int end)
static void sort(float array[ ], int start, int end)
static void sort(int array[ ], int start, int end)
static void sort(long array[ ], int start, int end)
static void sort(short array[ ], int start, int end)
static void sort(Object array[ ], int start, int end)
static <T> void sort(T array[ ], int start, int end, Comparator<? super T> c)
30-12-2017 70Lakshmi R, Asst. Professor, Dept. of ISE
Why Generic Collections?
• Generics add type safety to the Collection.
• Prior to generics, all collections stored references of type Object. This
allowed any type of reference to be stored in the collection.
• ArrayList list = new ArrayList(); - in this ArrayList example, any type of
reference can be stored.
• This can easily lead to errors.
• Consider the following example for pre-generic collection.
30-12-2017 71Lakshmi R, Asst. Professor, Dept. of ISE
// Pre-generics example that uses a collection.
import java.util.*;
class OldStyle {
public static void main(String args[]) {
ArrayList list = new ArrayList();
// These lines store strings, but any type of object
// can be stored. In old-style code, there is no
// convenient way to restrict the type of objects
stored
// in a collection
list.add("one");
list.add("two");
list.add("three");
list.add("four");
Iterator itr = list.iterator();
while(itr.hasNext()) {
// To retrieve an element, an explicit type
cast is needed
// because the collection stores only Object.
String str = (String) itr.next(); // explicit
cast needed here.
System.out.println(str + " is " +
str.length() + " chars long.");
}
}
}
30-12-2017 72Lakshmi R, Asst. Professor, Dept. of ISE
Why Generic Collections?
Problem with the preceding example:
1. it required that you, rather than the compiler, ensure that only
objects of the proper type be stored in a specific collection.
• For example, in the preceding example, list is clearly intended to store
Strings, but there is nothing that actually prevents another type of
reference from being added to the collection. For example, the compiler
will find nothing wrong with this line of code:
list.add(new Integer(100));
• Because list stores Object references, it can store a reference to Integer as
well as it can store a reference to String. However, if you intended list to hold
only strings, then the preceding statement would corrupt the collection.
30-12-2017 73Lakshmi R, Asst. Professor, Dept. of ISE
Why Generic Collections?
2. When you retrieve a reference from the collection, you must
manually cast that reference into the proper type.
3. Because Object can be cast into any type of object, it was possible
to cast a reference obtained from a collection into the wrong type.
For example, if the following statement were added to the
preceding example, it would still compile without error, but
generate a run-time exception when executed: Integer i = (Integer)
itr.next();
30-12-2017 74Lakshmi R, Asst. Professor, Dept. of ISE
Why Generic Collections?
• The addition of generics fundamentally improves the usability and
safety of collections because it
• Ensures that only references to objects of the proper type can actually be
stored in a collection. Thus, a collection will always contain references of a
known type.
• Eliminates the need to cast a reference retrieved from a collection. Instead, a
reference retrieved from a collection is automatically cast into the proper
type. This prevents run-time errors due to invalid casts and avoids an entire
category of errors.
• For example, ArrayList is now declared like this:
class ArrayList<E>
• Here, E is the type of element stored in the collection. Therefore, the
following declares an ArrayList for objects of type String:
ArrayList<String> list = new ArrayList<String>();30-12-2017 75Lakshmi R, Asst. Professor, Dept. of ISE
• Legacy Classes
• Dictionary
• Hashtable
• Properties
• Stack
• Vector
• Legacy Interface
• Enumeration
Legacy classes and interface
30-12-2017 76Lakshmi R, Asst. Professor, Dept. of ISE
30-12-2017 Lakshmi R, Asst. Professor, Dept. of ISE 77
The Collection Algorithms
NOTE: Try to remember 5 to 6 algorithms of your choice
30-12-2017 Lakshmi R, Asst. Professor, Dept. of ISE 78
30-12-2017 Lakshmi R, Asst. Professor, Dept. of ISE 79
30-12-2017 Lakshmi R, Asst. Professor, Dept. of ISE 80
30-12-2017 Lakshmi R, Asst. Professor, Dept. of ISE 81
30-12-2017 82Lakshmi R, Asst. Professor, Dept. of ISE

More Related Content

What's hot

Java Collections Framework
Java Collections FrameworkJava Collections Framework
Java Collections Framework
Sony India Software Center
 
Java Collections
Java  Collections Java  Collections
Collections Api - Java
Collections Api - JavaCollections Api - Java
Collections Api - Java
Drishti Bhalla
 
Java collections concept
Java collections conceptJava collections concept
Java collections concept
kumar gaurav
 
07 java collection
07 java collection07 java collection
07 java collection
Abhishek Khune
 
5 collection framework
5 collection framework5 collection framework
5 collection framework
Minal Maniar
 
Collections In Java
Collections In JavaCollections In Java
Collections In Java
Binoj T E
 
Java - Collections framework
Java - Collections frameworkJava - Collections framework
Java - Collections framework
Riccardo Cardin
 
Java Collections Framework Inroduction with Video Tutorial
Java Collections Framework Inroduction with Video TutorialJava Collections Framework Inroduction with Video Tutorial
Java Collections Framework Inroduction with Video Tutorial
Marcus Biel
 
java collections
java collectionsjava collections
java collections
javeed_mhd
 
Collections framework in java
Collections framework in javaCollections framework in java
Collections framework in java
yugandhar vadlamudi
 
Generics
GenericsGenerics
Java ArrayList Video Tutorial
Java ArrayList Video TutorialJava ArrayList Video Tutorial
Java ArrayList Video Tutorial
Marcus Biel
 
Collections in Java
Collections in JavaCollections in Java
Collections in Java
Khasim Cise
 
Java Collections Tutorials
Java Collections TutorialsJava Collections Tutorials
Java Collections Tutorials
Prof. Erwin Globio
 
Presentation1
Presentation1Presentation1
Presentation1
Anand Grewal
 
Java.util
Java.utilJava.util
Java.util
Ramakrishna kapa
 
Hash set (java platform se 8 )
Hash set (java platform se 8 )Hash set (java platform se 8 )
Hash set (java platform se 8 )
charan kumar
 
Java Collection framework
Java Collection frameworkJava Collection framework
Java Collection framework
ankitgarg_er
 
Java Collections
Java CollectionsJava Collections
Java Collections
parag
 

What's hot (20)

Java Collections Framework
Java Collections FrameworkJava Collections Framework
Java Collections Framework
 
Java Collections
Java  Collections Java  Collections
Java Collections
 
Collections Api - Java
Collections Api - JavaCollections Api - Java
Collections Api - Java
 
Java collections concept
Java collections conceptJava collections concept
Java collections concept
 
07 java collection
07 java collection07 java collection
07 java collection
 
5 collection framework
5 collection framework5 collection framework
5 collection framework
 
Collections In Java
Collections In JavaCollections In Java
Collections In Java
 
Java - Collections framework
Java - Collections frameworkJava - Collections framework
Java - Collections framework
 
Java Collections Framework Inroduction with Video Tutorial
Java Collections Framework Inroduction with Video TutorialJava Collections Framework Inroduction with Video Tutorial
Java Collections Framework Inroduction with Video Tutorial
 
java collections
java collectionsjava collections
java collections
 
Collections framework in java
Collections framework in javaCollections framework in java
Collections framework in java
 
Generics
GenericsGenerics
Generics
 
Java ArrayList Video Tutorial
Java ArrayList Video TutorialJava ArrayList Video Tutorial
Java ArrayList Video Tutorial
 
Collections in Java
Collections in JavaCollections in Java
Collections in Java
 
Java Collections Tutorials
Java Collections TutorialsJava Collections Tutorials
Java Collections Tutorials
 
Presentation1
Presentation1Presentation1
Presentation1
 
Java.util
Java.utilJava.util
Java.util
 
Hash set (java platform se 8 )
Hash set (java platform se 8 )Hash set (java platform se 8 )
Hash set (java platform se 8 )
 
Java Collection framework
Java Collection frameworkJava Collection framework
Java Collection framework
 
Java Collections
Java CollectionsJava Collections
Java Collections
 

Similar to Java Collection Framework

Collections lecture 35 40
Collections lecture 35 40Collections lecture 35 40
Collections lecture 35 40
bhawna sharma
 
Collection framework
Collection frameworkCollection framework
Collection framework
DilvarSingh2
 
Data structures
Data structuresData structures
Data structures
Nur Saleha
 
Advanced Java - UNIT 3.pptx
Advanced Java - UNIT 3.pptxAdvanced Java - UNIT 3.pptx
Advanced Java - UNIT 3.pptx
eyemitra1
 
11000121065_NAITIK CHATTERJEE.ppt
11000121065_NAITIK CHATTERJEE.ppt11000121065_NAITIK CHATTERJEE.ppt
11000121065_NAITIK CHATTERJEE.ppt
NaitikChatterjee
 
Collection framework
Collection frameworkCollection framework
Collection framework
Ravi_Kant_Sahu
 
Data structures
Data structures Data structures
Data structures
Rokonuzzaman Rony
 
Ds
DsDs
Session 17 - Collections - Lists, Sets
Session 17 - Collections - Lists, SetsSession 17 - Collections - Lists, Sets
Session 17 - Collections - Lists, Sets
PawanMM
 
R workshop
R workshopR workshop
R workshop
Revanth19921
 
Cs341
Cs341Cs341
Collections - Lists, Sets
Collections - Lists, Sets Collections - Lists, Sets
Collections - Lists, Sets
Hitesh-Java
 
collection framework.pptx
collection framework.pptxcollection framework.pptx
collection framework.pptx
SoniaKapoor56
 
Java 103
Java 103Java 103
Java 103
Manuela Grindei
 
datastructure-201021140600.pptx
datastructure-201021140600.pptxdatastructure-201021140600.pptx
datastructure-201021140600.pptx
ZISAN5
 
Nature Activities Binder _ by Slidesgo.pptx
Nature Activities Binder _ by Slidesgo.pptxNature Activities Binder _ by Slidesgo.pptx
Nature Activities Binder _ by Slidesgo.pptx
IllllBikkySharmaIlll
 
Collection framework (completenotes) zeeshan
Collection framework (completenotes) zeeshanCollection framework (completenotes) zeeshan
Collection framework (completenotes) zeeshan
Zeeshan Khan
 
20130215 Reading data into R
20130215 Reading data into R20130215 Reading data into R
20130215 Reading data into R
Kazuki Yoshida
 
2nd puc computer science chapter 3 data structures 1
2nd puc computer science chapter 3 data structures 12nd puc computer science chapter 3 data structures 1
2nd puc computer science chapter 3 data structures 1
Aahwini Esware gowda
 
chap12.ppt
chap12.pptchap12.ppt

Similar to Java Collection Framework (20)

Collections lecture 35 40
Collections lecture 35 40Collections lecture 35 40
Collections lecture 35 40
 
Collection framework
Collection frameworkCollection framework
Collection framework
 
Data structures
Data structuresData structures
Data structures
 
Advanced Java - UNIT 3.pptx
Advanced Java - UNIT 3.pptxAdvanced Java - UNIT 3.pptx
Advanced Java - UNIT 3.pptx
 
11000121065_NAITIK CHATTERJEE.ppt
11000121065_NAITIK CHATTERJEE.ppt11000121065_NAITIK CHATTERJEE.ppt
11000121065_NAITIK CHATTERJEE.ppt
 
Collection framework
Collection frameworkCollection framework
Collection framework
 
Data structures
Data structures Data structures
Data structures
 
Ds
DsDs
Ds
 
Session 17 - Collections - Lists, Sets
Session 17 - Collections - Lists, SetsSession 17 - Collections - Lists, Sets
Session 17 - Collections - Lists, Sets
 
R workshop
R workshopR workshop
R workshop
 
Cs341
Cs341Cs341
Cs341
 
Collections - Lists, Sets
Collections - Lists, Sets Collections - Lists, Sets
Collections - Lists, Sets
 
collection framework.pptx
collection framework.pptxcollection framework.pptx
collection framework.pptx
 
Java 103
Java 103Java 103
Java 103
 
datastructure-201021140600.pptx
datastructure-201021140600.pptxdatastructure-201021140600.pptx
datastructure-201021140600.pptx
 
Nature Activities Binder _ by Slidesgo.pptx
Nature Activities Binder _ by Slidesgo.pptxNature Activities Binder _ by Slidesgo.pptx
Nature Activities Binder _ by Slidesgo.pptx
 
Collection framework (completenotes) zeeshan
Collection framework (completenotes) zeeshanCollection framework (completenotes) zeeshan
Collection framework (completenotes) zeeshan
 
20130215 Reading data into R
20130215 Reading data into R20130215 Reading data into R
20130215 Reading data into R
 
2nd puc computer science chapter 3 data structures 1
2nd puc computer science chapter 3 data structures 12nd puc computer science chapter 3 data structures 1
2nd puc computer science chapter 3 data structures 1
 
chap12.ppt
chap12.pptchap12.ppt
chap12.ppt
 

More from Lakshmi R

Proofs and disproofs
Proofs and disproofsProofs and disproofs
Proofs and disproofs
Lakshmi R
 
Use of quantifiers
Use of quantifiersUse of quantifiers
Use of quantifiers
Lakshmi R
 
Css basics
Css basicsCss basics
Css basics
Lakshmi R
 
Html basics
Html basicsHtml basics
Html basics
Lakshmi R
 
Logical implication - Necessary and Sufficient conditions
Logical implication  -  Necessary and Sufficient conditionsLogical implication  -  Necessary and Sufficient conditions
Logical implication - Necessary and Sufficient conditions
Lakshmi R
 
NAND and NOR connectives
NAND and NOR connectivesNAND and NOR connectives
NAND and NOR connectives
Lakshmi R
 
Discrete Mathematical Structures - Fundamentals of Logic - Principle of duality
Discrete Mathematical Structures - Fundamentals of Logic - Principle of dualityDiscrete Mathematical Structures - Fundamentals of Logic - Principle of duality
Discrete Mathematical Structures - Fundamentals of Logic - Principle of duality
Lakshmi R
 
Fundamentals of logic 1
Fundamentals of logic   1Fundamentals of logic   1
Fundamentals of logic 1
Lakshmi R
 
Logical equivalence, laws of logic
Logical equivalence, laws of logicLogical equivalence, laws of logic
Logical equivalence, laws of logic
Lakshmi R
 
Rules of inference
Rules of inferenceRules of inference
Rules of inference
Lakshmi R
 
Jsp presentation
Jsp presentationJsp presentation
Jsp presentation
Lakshmi R
 

More from Lakshmi R (11)

Proofs and disproofs
Proofs and disproofsProofs and disproofs
Proofs and disproofs
 
Use of quantifiers
Use of quantifiersUse of quantifiers
Use of quantifiers
 
Css basics
Css basicsCss basics
Css basics
 
Html basics
Html basicsHtml basics
Html basics
 
Logical implication - Necessary and Sufficient conditions
Logical implication  -  Necessary and Sufficient conditionsLogical implication  -  Necessary and Sufficient conditions
Logical implication - Necessary and Sufficient conditions
 
NAND and NOR connectives
NAND and NOR connectivesNAND and NOR connectives
NAND and NOR connectives
 
Discrete Mathematical Structures - Fundamentals of Logic - Principle of duality
Discrete Mathematical Structures - Fundamentals of Logic - Principle of dualityDiscrete Mathematical Structures - Fundamentals of Logic - Principle of duality
Discrete Mathematical Structures - Fundamentals of Logic - Principle of duality
 
Fundamentals of logic 1
Fundamentals of logic   1Fundamentals of logic   1
Fundamentals of logic 1
 
Logical equivalence, laws of logic
Logical equivalence, laws of logicLogical equivalence, laws of logic
Logical equivalence, laws of logic
 
Rules of inference
Rules of inferenceRules of inference
Rules of inference
 
Jsp presentation
Jsp presentationJsp presentation
Jsp presentation
 

Recently uploaded

20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
kumardaparthi1024
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
Pixlogix Infotech
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
IndexBug
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
Mariano Tinti
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
Zilliz
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
Edge AI and Vision Alliance
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
Claudio Di Ciccio
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
SOFTTECHHUB
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 

Recently uploaded (20)

20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 

Java Collection Framework

  • 1. The Collection Framework By, Lakshmi R Asst. Professor Dept. of ISE
  • 2. Collection – Group of objects Collection Framework – • Classes and Interfaces that manage collections. • Provides an architecture to store and manipulate the group of objects. • Standardizes the way in which group of objects that are handled by your programs. Overview 30-12-2017 2Lakshmi R, Asst. Professor, Dept. of ISE
  • 3. 30-12-2017 3Lakshmi R, Asst. Professor, Dept. of ISE
  • 4. • Performance - efficient implementation of data structures like lists, array lists, trees, set, hash tables and many more. (You don’t have to code manually) • Interoperability – different types of collections wok in similar manner • Easy – Extension and Adaption. Collections Framework is built upon a set of standard interfaces • Integration of standard arrays to Collection Framework. • Algorithms – Defined as static methods within the Collection class • Iterator interface – Standard way of accessing the elements within a collection. • Each collection implements Iterator. Eg: Code that cycles through a set can be used to cycle through a list. Design Goal 30-12-2017 4Lakshmi R, Asst. Professor, Dept. of ISE
  • 5. The Collection Interfaces 30-12-2017 5Lakshmi R, Asst. Professor, Dept. of ISE
  • 6. The Collection Interface • It is a generic interface. Declaration : interface Collection<E> • Where E represents the type of objects the collection can hold. • Collection extends the Iterable interface. (Hence, it can be cycled through for-each version of for loop) 30-12-2017 6Lakshmi R, Asst. Professor, Dept. of ISE
  • 7. 30-12-2017 7Lakshmi R, Asst. Professor, Dept. of ISE
  • 8. 30-12-2017 8Lakshmi R, Asst. Professor, Dept. of ISE
  • 9. The List Interface • It is a generic interface. • List extends Collection interface. Declaration : interface List<E> • Where E represents the type of objects the list can hold. • List may contain duplicate elements. 30-12-2017 9Lakshmi R, Asst. Professor, Dept. of ISE
  • 10. 30-12-2017 10Lakshmi R, Asst. Professor, Dept. of ISE
  • 11. The Set Interface • It is a generic interface. • Set extends Collection interface. Declaration : interface Set<E> • Where E represents the type of objects the set can hold. • Set doesn’t contain duplicate elements. • No methods of its own. 30-12-2017 11Lakshmi R, Asst. Professor, Dept. of ISE
  • 12. The SortedSet Interface • It is a generic interface. • Set extends Set interface. Declaration : interface SortedSet<E> • Where E represents the type of objects the SortedSet can hold. • Set doesn’t contain duplicate elements. • Declares set in ascending order. 30-12-2017 12Lakshmi R, Asst. Professor, Dept. of ISE
  • 13. 30-12-2017 13Lakshmi R, Asst. Professor, Dept. of ISE
  • 14. The Queue Interface • Queue is a generic interface • The Queue interface extends Collection • It declares the behavior of a queue (first-in, first-out list) Declaration : interface Queue<E> 30-12-2017 14Lakshmi R, Asst. Professor, Dept. of ISE
  • 15. 30-12-2017 15Lakshmi R, Asst. Professor, Dept. of ISE
  • 16. The Deque Interface • It extends Queue and declares the behavior of a double-ended queue • Double-ended queues can function as standard, first-in, first-out queues or as last-in, first-out stacks. Declaration : interface Deque<E> 30-12-2017 16Lakshmi R, Asst. Professor, Dept. of ISE
  • 17. 30-12-2017 17Lakshmi R, Asst. Professor, Dept. of ISE
  • 18. 30-12-2017 18Lakshmi R, Asst. Professor, Dept. of ISE
  • 19. The Collection Classes 30-12-2017 19Lakshmi R, Asst. Professor, Dept. of ISE
  • 20. The ArrayList Class • The ArrayList class extends AbstractList and implements the List interface Declaration : Class ArrayList<E> Constructors: ArrayList( ) – Empty array list ArrayList(Collection<? extends E> c) ArrayList(int capacity) 30-12-2017 20Lakshmi R, Asst. Professor, Dept. of ISE
  • 21. // Demonstrate ArrayList. import java.util.*; class ArrayListDemo { public static void main(String args[]) { // Create an array list. ArrayList<String> al = new ArrayList<String>(); System.out.println("Initial size of al: " + al.size()); // Add elements to the array list. al.add("C"); al.add("A"); al.add("E"); al.add("B"); al.add("D"); al.add("F"); 30-12-2017 21Lakshmi R, Asst. Professor, Dept. of ISE
  • 22. al.add(1, "A2"); System.out.println("Size of al after additions: " + al.size()); // Display the array list. System.out.println("Contents of al: " + al); // Remove elements from the array list. al.remove("F"); al.remove(2); System.out.println("Size of al after deletions: " +al.size()); System.out.println("Contents of al: " + al); } } The output from this program is shown here: Initial size of al: 0 Size of al after additions: 7 Contents of al: [C, A2, A, E, B, D, F] Size of al after deletions: 5 Contents of al: [C, A2, E, B, D] 30-12-2017 22Lakshmi R, Asst. Professor, Dept. of ISE
  • 23. Obtaining an Array from an ArrayList // Convert an ArrayList into an array. import java.util.*; class ArrayListToArray { public static void main(String args[]) { // Create an array list. ArrayList<Integer> al = new ArrayList<Integer>(); // Add elements to the array list. al.add(1); al.add(2); al.add(3); al.add(4); 30-12-2017 23Lakshmi R, Asst. Professor, Dept. of ISE
  • 24. System.out.println("Contents of al: " + al); // Get the array. Integer ia[] = new Integer[al.size()]; ia = al.toArray(ia); int sum = 0; // Sum the array. for(int i : ia) sum += i; System.out.println("Sum is: " + sum); } } The output from the program is shown here: Contents of al: [1, 2, 3, 4] Sum is: 10 30-12-2017 24Lakshmi R, Asst. Professor, Dept. of ISE
  • 25. The LinkedList Class • The LinkedList class extends AbstractSequentialList • Implements the List, Deque, and Queue interfaces • LinkedList is a generic class Declaration : Class LinkedList<E> Constructors: LinkedList( ) – Empty linked list LinkedList(Collection<? extends E> c) 30-12-2017 25Lakshmi R, Asst. Professor, Dept. of ISE
  • 26. // Demonstrate LinkedList. import java.util.*; class LinkedListDemo { public static void main(String args[]) { // Create a linked list. LinkedList<String> ll = new LinkedList<String>(); // Add elements to the linked list. ll.add("F"); ll.add("B"); ll.add("D"); ll.add("E"); ll.add("C"); ll.addLast("Z"); ll.addFirst("A"); ll.add(1, "A2"); 30-12-2017 26Lakshmi R, Asst. Professor, Dept. of ISE
  • 27. // Remove elements from the linked list. ll.remove("F"); ll.remove(2); System.out.println("Contents of ll after deletion: "+ ll); // Remove first and last elements. ll.removeFirst(); ll.removeLast(); System.out.println("ll after deleting first and last: "+ ll); // Get and set a value. String val = ll.get(2); ll.set(2, val + " Changed"); System.out.println("ll after change: " + ll); } } 30-12-2017 27Lakshmi R, Asst. Professor, Dept. of ISE
  • 28. The output from this program is shown here: Original contents of ll: [A, A2, F, B, D, E, C, Z] Contents of ll after deletion: [A, A2, D, E, C, Z] ll after deleting first and last: [A2, D, E, C] ll after change: [A2, D, E Changed, C] 30-12-2017 28Lakshmi R, Asst. Professor, Dept. of ISE
  • 29. The HashSet Class • HashSet extends AbstractSet and implements the Set interface Declaration class HashSet<E> Constructors HashSet( ) – Default size 16 HashSet(Collection<? extends E> c) HashSet(int capacity) HashSet(int capacity, float fillRatio) 30-12-2017 29Lakshmi R, Asst. Professor, Dept. of ISE
  • 30. // Demonstrate HashSet. import java.util.*; class HashSetDemo { public static void main(String args[]) { // Create a hash set. HashSet<String> hs = new HashSet<String>(); // Add elements to the hash set. hs.add("B"); hs.add("A"); hs.add("D"); hs.add("E"); hs.add("C"); hs.add("F"); System.out.println(hs); } } The following is the output from this program: [D, A, F, C, B, E] 30-12-2017 30Lakshmi R, Asst. Professor, Dept. of ISE
  • 31. The LinkedHashSet Class • The LinkedHashSet class extends HashSet Declaration class LinkedHashSet<E> • Uses linked list to store hash set. 30-12-2017 31Lakshmi R, Asst. Professor, Dept. of ISE
  • 32. The TreeSet Class Declaration: class TreeSet<E> TreeSet( ) TreeSet(Collection<? extends E> c) TreeSet(Comparator<? super E> comp) TreeSet(SortedSet<E> ss) 30-12-2017 32Lakshmi R, Asst. Professor, Dept. of ISE
  • 33. // Demonstrate TreeSet. import java.util.*; class TreeSetDemo { public static void main(String args[]) { // Create a tree set. TreeSet<String> ts = new TreeSet<String>(); // Add elements to the tree set. ts.add("C"); ts.add("A"); ts.add("B"); ts.add("E"); ts.add("F"); ts.add("D"); System.out.println(ts); } } The output from this program is shown here: [A, B, C, D, E, F] 30-12-2017 33Lakshmi R, Asst. Professor, Dept. of ISE
  • 34. The PriorityQueue Class • PriorityQueue extends AbstractQueue and implements the Queue interface Declaration class PriorityQueue<E> Constructors PriorityQueue( ) – Starting Capacity is 11 PriorityQueue(int capacity) PriorityQueue(int capacity, Comparator<? super E> comp) PriorityQueue(Collection<? extends E> c) PriorityQueue(PriorityQueue<? extends E> c) PriorityQueue(SortedSet<? extends E> c) 30-12-2017 34Lakshmi R, Asst. Professor, Dept. of ISE
  • 35. The ArrayDeque Class • It extends AbstractCollection and implements the Deque interface Declaration class ArrayDeque<E> Constuctors: ArrayDeque( ) – Starting Capacity 16 ArrayDeque(int size) ArrayDeque(Collection<? extends E> c) 30-12-2017 35Lakshmi R, Asst. Professor, Dept. of ISE
  • 36. Accessing a Collection via an Iterator interface Iterator<E> - Single Directional Traversal interface ListIterator<E> - Bidirectional Traversal 30-12-2017 36Lakshmi R, Asst. Professor, Dept. of ISE
  • 37. 30-12-2017 37Lakshmi R, Asst. Professor, Dept. of ISE
  • 38. // Demonstrate iterators. import java.util.*; class IteratorDemo { public static void main(String args[]) { // Create an array list. ArrayList<String> al = new ArrayList<String>(); // Add elements to the array list. al.add("C"); al.add("A"); al.add("E"); al.add("B"); al.add("D"); al.add("F"); 30-12-2017 38Lakshmi R, Asst. Professor, Dept. of ISE
  • 39. // Use iterator to display contents of al. System.out.print("Original contents of al: "); Iterator<String> itr = al.iterator(); while(itr.hasNext()) { String element = itr.next(); System.out.print(element + " "); } System.out.println(); // Modify objects being iterated. ListIterator<String> litr = al.listIterator(); while(litr.hasNext()) { String element = litr.next(); litr.set(element + "+"); } 30-12-2017 39Lakshmi R, Asst. Professor, Dept. of ISE
  • 40. System.out.print("Modified contents of al: "); itr = al.iterator(); while(itr.hasNext()) { String element = itr.next(); System.out.print(element + " "); } System.out.println(); // Now, display the list backwards. System.out.print("Modified list backwards: "); while(litr.hasPrevious()) { String element = litr.previous(); System.out.print(element + " "); } System.out.println(); } } The output is shown here: Original contents of al: C A E B D F Modified contents of al: C+ A+ E+ B+ D+ F+ Modified list backwards: F+ D+ B+ E+ A+ C+ 30-12-2017 40Lakshmi R, Asst. Professor, Dept. of ISE
  • 41. The For-Each Alternative to Iterators // Use the for-each for loop to cycle through a collection. import java.util.*; class ForEachDemo { public static void main(String args[]) { // Create an array list for integers. ArrayList<Integer> vals = new ArrayList<Integer>(); // Add values to the array list. vals.add(1); vals.add(2); vals.add(3); vals.add(4); vals.add(5); 30-12-2017 41Lakshmi R, Asst. Professor, Dept. of ISE
  • 42. // Use for loop to display the values. System.out.print("Original contents of vals: "); for(int v : vals) System.out.print(v + " "); System.out.println(); // Now, sum the values by using a for loop. int sum = 0; for(int v : vals) sum += v; System.out.println("Sum of values: " + sum); } } The output from the program is shown here: Original contents of vals: 1 2 3 4 5 Sum of values: 15 30-12-2017 42Lakshmi R, Asst. Professor, Dept. of ISE
  • 43. Storing User-Defined Classes in Collections // A simple mailing list example. import java.util.*; class Address { private String name; private String street; private String city; private String state; private String code; Address(String n, String s, String c, String st, String cd) { name = n; street = s; city = c; state = st; code = cd; } public String toString() { return name + "n" + street + "n" + city + " " + state + " " + code; } }30-12-2017 43Lakshmi R, Asst. Professor, Dept. of ISE
  • 44. class MailList { public static void main(String args[]) { LinkedList<Address> ml = new LinkedList<Address>(); // Add elements to the linked list. ml.add(new Address("J.W. West", "11 Oak Ave","Urbana", "IL", "61801")); ml.add(new Address("Ralph Baker", "1142 Maple Lane","Mahomet", "IL", "61853")); ml.add(new Address("Tom Carlton", "867 Elm St","Champaign", "IL",61820")); // Display the mailing list. for(Address element : ml) System.out.println(element + "n"); System.out.println(); } } 30-12-2017 44Lakshmi R, Asst. Professor, Dept. of ISE
  • 45. Working with Maps • A map is an object that stores associations between keys and values, or key/value pairs. • Given a key, you can find its value. Both keys and values are objects. • The keys must be unique, but the values may be duplicated. 30-12-2017 45Lakshmi R, Asst. Professor, Dept. of ISE
  • 46. The Map Interface • The Map interface maps unique keys to values. A key is an object that you use to retrieve a value at a later date. • Given a key and a value, you can store the value in a Map object. • After the value is stored, you can retrieve it by using its key. Declaration: interface Map<K, V> 30-12-2017 46Lakshmi R, Asst. Professor, Dept. of ISE
  • 47. 30-12-2017 47Lakshmi R, Asst. Professor, Dept. of ISE
  • 48. The SortedMap Interface • The SortedMap interface extends Map. • It ensures that the entries are maintained in ascending order based on the keys. • SortedMap is generic Declaration interface SortedMap<K, V> 30-12-2017 48Lakshmi R, Asst. Professor, Dept. of ISE
  • 49. 30-12-2017 49Lakshmi R, Asst. Professor, Dept. of ISE
  • 50. The Map.Entry Interface • The Map.Entry interface enables you to work with a map entry. 30-12-2017 50Lakshmi R, Asst. Professor, Dept. of ISE
  • 51. The Map Classes The HashMap Class HashMap is a generic class that has this declaration: class HashMap<K, V> Constructors: HashMap( ) HashMap(Map<? extends K, ? extends V> m) HashMap(int capacity) HashMap(int capacity, float fillRatio) 30-12-2017 51Lakshmi R, Asst. Professor, Dept. of ISE
  • 52. import java.util.*; class HashMapDemo { public static void main(String args[]) { // Create a hash map. HashMap<String, Double> hm = new HashMap<String, Double>(); // Put elements to the map hm.put("John Doe", new Double(3434.34)); hm.put("Tom Smith", new Double(123.22)); hm.put("Jane Baker", new Double(1378.00)); hm.put("Tod Hall", new Double(99.22)); hm.put("Ralph Smith", new Double(-19.08)); 30-12-2017 52Lakshmi R, Asst. Professor, Dept. of ISE
  • 53. // Get a set of the entries. Set<Map.Entry<String, Double>> set = hm.entrySet(); // Display the set. for(Map.Entry<String, Double> me : set) { System.out.print(me.getKey() + ": "); System.out.println(me.getValue()); } System.out.println(); // Deposit 1000 into John Doe's account. double balance = hm.get("John Doe"); hm.put("John Doe", balance + 1000); System.out.println("John Doe's new balance: " + hm.get("John Doe")); } } 30-12-2017 53Lakshmi R, Asst. Professor, Dept. of ISE
  • 54. The TreeMap Class Declaration: class TreeMap<K, V> Constructors: TreeMap( ) TreeMap(Comparator<? super K> comp) TreeMap(Map<? extends K, ? extends V> m) TreeMap(SortedMap<K, ? extends V> sm) 30-12-2017 54Lakshmi R, Asst. Professor, Dept. of ISE
  • 55. import java.util.*; class TreeMapDemo { public static void main(String args[]) { // Create a tree map. TreeMap<String, Double> tm = new TreeMap<String, Double>(); // Put elements to the map. tm.put("John Doe", new Double(3434.34)); tm.put("Tom Smith", new Double(123.22)); tm.put("Jane Baker", new Double(1378.00)); tm.put("Tod Hall", new Double(99.22)); tm.put("Ralph Smith", new Double(-19.08)); 30-12-2017 55Lakshmi R, Asst. Professor, Dept. of ISE
  • 56. // Get a set of the entries. Set<Map.Entry<String, Double>> set = tm.entrySet(); // Display the elements. for(Map.Entry<String, Double> me : set) { System.out.print(me.getKey() + ": "); System.out.println(me.getValue()); } System.out.println(); // Deposit 1000 into John Doe's account. double balance = tm.get("John Doe"); tm.put("John Doe", balance + 1000); System.out.println("John Doe's new balance: " + tm.get("John Doe")); } } 30-12-2017 56Lakshmi R, Asst. Professor, Dept. of ISE
  • 57. Using Comparator • Java Comparator interface is used to order the objects of user- defined class. • A comparator object is capable of comparing two objects of two different classes Methods: int compare(T obj1, T obj2) boolean equals(Object obj) 30-12-2017 57Lakshmi R, Asst. Professor, Dept. of ISE
  • 58. // Use a custom comparator. import java.util.*; // A reverse comparator for strings. class MyComp implements Comparator<String> { public int compare(String a, String b) { String aStr, bStr; aStr = a; bStr = b; // Reverse the comparison. return bStr.compareTo(aStr); } // No need to override equals. } 30-12-2017 58Lakshmi R, Asst. Professor, Dept. of ISE
  • 59. class CompDemo { public static void main(String args[]) { // Create a tree set. TreeSet<String> ts = new TreeSet<String>(new MyComp()); // Add elements to the tree set. ts.add("C"); ts.add("A"); ts.add("B"); ts.add("E"); ts.add("F"); ts.add("D"); // Display the elements. for(String element : ts) System.out.print(element + " "); System.out.println(); } } As the following output shows, the tree is now stored in reverse order: F E D C B A 30-12-2017 59Lakshmi R, Asst. Professor, Dept. of ISE
  • 60. class Arrays • It provides various methods that are useful when working with arrays • These methods help bridge the gap between collections and arrays asList( ) method – it returns List view of an array static <T> List asList(T ... array) Here, array is the array that contains the data. 30-12-2017 60Lakshmi R, Asst. Professor, Dept. of ISE
  • 61. Methods defined in Arrays • The binarySearch( ) method • The copyOf() method • The copyOfRange( ) method • The equals( ) method • The fill( ) method • The sort( ) method 30-12-2017 61Lakshmi R, Asst. Professor, Dept. of ISE
  • 62. The binarySearch( ) method – various forms • On successful search, it returns position of the key element in specified array. Otherwise returns negative value. static int binarySearch(byte array[ ], byte value) static int binarySearch(char array[ ], char value) static int binarySearch(double array[ ], double value) static int binarySearch(float array[ ], float value) static int binarySearch(int array[ ], int value) static int binarySearch(long array[ ], long value) static int binarySearch(short array[ ], short value) static int binarySearch(Object array[ ], Object value) static <T> int binarySearch(T[ ] array, T value, Comparator<? super T> c) 30-12-2017 62Lakshmi R, Asst. Professor, Dept. of ISE
  • 63. The copyOf() method – various forms • It returns a copy of an array. • The original array is specified by source and the length of the copy is specified by len. • If the copy is longer than source, then • the copy is padded with zeroes for numeric arrays • nulls for object arrays • false for boolean arrays • If the copy is shorter than source, then the copy is truncated Various forms: static boolean[ ] copyOf(boolean[ ] source, int len) static byte[ ] copyOf(byte[ ] source, int len) static char[ ] copyOf(char[ ] source, int len) 30-12-2017 63Lakshmi R, Asst. Professor, Dept. of ISE
  • 64. static double[ ] copyOf(double[ ] source, int len) static float[ ] copyOf(float[ ] source, int len) static int[ ] copyOf(int[ ] source, int len) static long[ ] copyOf(long[ ] source, int len) static short[ ] copyOf(short[ ] source, int len) static <T> T[ ] copyOf(T[ ] source, int len) static <T,U> T[ ] copyOf(U[ ] source, int len, Class<? extends T[ ]> resultT) • the type of resultT becomes the type of the array returned. 30-12-2017 64Lakshmi R, Asst. Professor, Dept. of ISE
  • 65. The copyOfRange( ) method – various forms static boolean[ ] copyOfRange(boolean[ ] source, int start, int end) static byte[ ] copyOfRange(byte[ ] source, int start, int end) static char[ ] copyOfRange(char[ ] source, int start, int end) static double[ ] copyOfRange(double[ ] source, int start, int end) static float[ ] copyOfRange(float[ ] source, int start, int end) static int[ ] copyOfRange(int[ ] source, int start, int end) static long[ ] copyOfRange(long[ ] source, int start, int end) static short[ ] copyOfRange(short[ ] source, int start, int end) static <T> T[ ] copyOfRange(T[ ] source, int start, int end) static <T,U> T[ ] copyOfRange(U[ ] source, int start, int end, Class<? extends T[ ]> resultT) 30-12-2017 65Lakshmi R, Asst. Professor, Dept. of ISE
  • 66. The equals( ) method • returns true if two arrays are equivalent. Otherwise, it returns false. static boolean equals(boolean array1[ ], boolean array2[ ]) static boolean equals(byte array1[ ], byte array2[ ]) static boolean equals(char array1[ ], char array2[ ]) static boolean equals(double array1[ ], double array2[ ]) static boolean equals(float array1[ ], float array2[ ]) static boolean equals(int array1[ ], int array2[ ]) static boolean equals(long array1[ ], long array2[ ]) static boolean equals(short array1[ ], short array2[ ]) static boolean equals(Object array1[ ], Object array2[ ]) 30-12-2017 66Lakshmi R, Asst. Professor, Dept. of ISE
  • 67. The fill( ) method – Version 1 • Assigns a value to all elements in an array • It fills an array with a specified value static void fill(boolean array[ ], boolean value) static void fill(byte array[ ], byte value) static void fill(char array[ ], char value) static void fill(double array[ ], double value) static void fill(float array[ ], float value) static void fill(int array[ ], int value) static void fill(long array[ ], long value) static void fill(short array[ ], short value) static void fill(Object array[ ], Object value) 30-12-2017 67Lakshmi R, Asst. Professor, Dept. of ISE
  • 68. The fill( ) method – Version 2 • assigns a value to a subset of an array static void fill(boolean array[ ], int start, int end, boolean value) static void fill(byte array[ ], int start, int end, byte value) static void fill(char array[ ], int start, int end, char value) static void fill(double array[ ], int start, int end, double value) static void fill(float array[ ], int start, int end, float value) static void fill(int array[ ], int start, int end, int value) static void fill(long array[ ], int start, int end, long value) static void fill(short array[ ], int start, int end, short value) static void fill(Object array[ ], int start, int end, Object value) 30-12-2017 68Lakshmi R, Asst. Professor, Dept. of ISE
  • 69. The sort( ) method – version 1 • Sorts an array so that it is arranged in ascending order. • It sorts an entire array static void sort(byte array[ ]) static void sort(char array[ ]) static void sort(double array[ ]) static void sort(float array[ ]) static void sort(int array[ ]) static void sort(long array[ ]) static void sort(short array[ ]) static void sort(Object array[ ]) static <T> void sort(T array[ ], Comparator<? super T> c) 30-12-2017 69Lakshmi R, Asst. Professor, Dept. of ISE
  • 70. The sort( ) method – version 2 • Enables you to specify a range within an array that you want to sort. static void sort(byte array[ ], int start, int end) static void sort(char array[ ], int start, int end) static void sort(double array[ ], int start, int end) static void sort(float array[ ], int start, int end) static void sort(int array[ ], int start, int end) static void sort(long array[ ], int start, int end) static void sort(short array[ ], int start, int end) static void sort(Object array[ ], int start, int end) static <T> void sort(T array[ ], int start, int end, Comparator<? super T> c) 30-12-2017 70Lakshmi R, Asst. Professor, Dept. of ISE
  • 71. Why Generic Collections? • Generics add type safety to the Collection. • Prior to generics, all collections stored references of type Object. This allowed any type of reference to be stored in the collection. • ArrayList list = new ArrayList(); - in this ArrayList example, any type of reference can be stored. • This can easily lead to errors. • Consider the following example for pre-generic collection. 30-12-2017 71Lakshmi R, Asst. Professor, Dept. of ISE
  • 72. // Pre-generics example that uses a collection. import java.util.*; class OldStyle { public static void main(String args[]) { ArrayList list = new ArrayList(); // These lines store strings, but any type of object // can be stored. In old-style code, there is no // convenient way to restrict the type of objects stored // in a collection list.add("one"); list.add("two"); list.add("three"); list.add("four"); Iterator itr = list.iterator(); while(itr.hasNext()) { // To retrieve an element, an explicit type cast is needed // because the collection stores only Object. String str = (String) itr.next(); // explicit cast needed here. System.out.println(str + " is " + str.length() + " chars long."); } } } 30-12-2017 72Lakshmi R, Asst. Professor, Dept. of ISE
  • 73. Why Generic Collections? Problem with the preceding example: 1. it required that you, rather than the compiler, ensure that only objects of the proper type be stored in a specific collection. • For example, in the preceding example, list is clearly intended to store Strings, but there is nothing that actually prevents another type of reference from being added to the collection. For example, the compiler will find nothing wrong with this line of code: list.add(new Integer(100)); • Because list stores Object references, it can store a reference to Integer as well as it can store a reference to String. However, if you intended list to hold only strings, then the preceding statement would corrupt the collection. 30-12-2017 73Lakshmi R, Asst. Professor, Dept. of ISE
  • 74. Why Generic Collections? 2. When you retrieve a reference from the collection, you must manually cast that reference into the proper type. 3. Because Object can be cast into any type of object, it was possible to cast a reference obtained from a collection into the wrong type. For example, if the following statement were added to the preceding example, it would still compile without error, but generate a run-time exception when executed: Integer i = (Integer) itr.next(); 30-12-2017 74Lakshmi R, Asst. Professor, Dept. of ISE
  • 75. Why Generic Collections? • The addition of generics fundamentally improves the usability and safety of collections because it • Ensures that only references to objects of the proper type can actually be stored in a collection. Thus, a collection will always contain references of a known type. • Eliminates the need to cast a reference retrieved from a collection. Instead, a reference retrieved from a collection is automatically cast into the proper type. This prevents run-time errors due to invalid casts and avoids an entire category of errors. • For example, ArrayList is now declared like this: class ArrayList<E> • Here, E is the type of element stored in the collection. Therefore, the following declares an ArrayList for objects of type String: ArrayList<String> list = new ArrayList<String>();30-12-2017 75Lakshmi R, Asst. Professor, Dept. of ISE
  • 76. • Legacy Classes • Dictionary • Hashtable • Properties • Stack • Vector • Legacy Interface • Enumeration Legacy classes and interface 30-12-2017 76Lakshmi R, Asst. Professor, Dept. of ISE
  • 77. 30-12-2017 Lakshmi R, Asst. Professor, Dept. of ISE 77 The Collection Algorithms NOTE: Try to remember 5 to 6 algorithms of your choice
  • 78. 30-12-2017 Lakshmi R, Asst. Professor, Dept. of ISE 78
  • 79. 30-12-2017 Lakshmi R, Asst. Professor, Dept. of ISE 79
  • 80. 30-12-2017 Lakshmi R, Asst. Professor, Dept. of ISE 80
  • 81. 30-12-2017 Lakshmi R, Asst. Professor, Dept. of ISE 81
  • 82. 30-12-2017 82Lakshmi R, Asst. Professor, Dept. of ISE