850 likes | 961 Views
SD2054 Software Development. The Limitation of Arrays. Once an array is created it must be sized, and this size is fixed !. The Limitation of Arrays. An array contains no useful pre-defined methods !. The Limitation of Arrays. Use the classes provided in the Java Collections Framework !.
E N D
SD2054 Software Development
The Limitation of Arrays Once an array is created it must be sized, and this size is fixed!
The Limitation of Arrays An array contains no useful pre-defined methods!
The Limitation of Arrays Use the classes provided in the Java Collections Framework!
The Java Collections Framework By the end of this lecture you should be able to: • use the ArrayList class to store a list of objects; • use the HashSet class to store a set of objects • use the HashMap class to store objects in a map; • fix the type of elements within a collection using the generics mechanism; • use objects of your own classes in conjunction with Java's collection classes.
The classes in the JCF are all found in the java.util package. • import java.util.*
Three important interfaces from this group are: • List • Set • Map
The List interface The List interface specifies the methods required to process an ordered list of objects. Such a list may contain duplicates.
The List interface Two implementations provided : ArrayList& LinkedList
Using an ArrayList to store a queue of jobs waiting for a printer
The ArrayList constructor creates an empty list: ArrayList printQ = new ArrayList();
The ArrayList constructor creates an empty list: ArrayList<String>printQ = new ArrayList<String>(); What’s that stuff in angled brackets?
The ArrayList constructor creates an empty list: ArrayList<String>printQ = new ArrayList<String>(); It’s a new Java feature called generics!
List<String> printQ = new ArrayList<String>(); ArrayList<String> printQ = new ArrayList<String>(); A method that receives a printQ object, would now be declared as follows public void someMethod (List<String> printQIn) { // some code here }
List<String> printQ = new ArrayList<String>(); A method that receives a printQ object, would now be declared as follows public void someMethod (List<String> printQIn) { // some code here }
List<String> printQ = new HashList<String>(); A method that receives a printQ object, would now be declared as follows public void someMethod (List<String> printQIn) { // some code here }
0 1 2 3 List methods - add printQ.add("myLetter.doc"); printQ.add("myFoto.jpg"); printQ.add("results.xls"); printQ.add("chapter.doc"); myLetter.doc myFoto.jpg results.xls chapter.doc printQ
List methods - toString All the Java collection types have a toString method defined System.out.println(printQ); Lists are displayed as follows. [myLetter.doc, myFoto.jpg, results.xls, chapter.doc]
2 3 4 1 0 0 1 2 3 myLetter.doc myFoto.jpg results.xls chapter.doc List methods – add revisited printQ.add(0, "importantMemo.doc"); importantMemo.doc printQ
0 1 2 3 4 importantMemo.doc myLetter.doc myFoto.jpg results.xls chapter.doc List methods – set printQ.set(4, "newChapter.doc"); newChapter.doc printQ
0 1 2 3 4 importantMemo.doc myLetter.doc myFoto.jpg results.xls chapter.doc List methods – size printQ.set(printQ.size()-1, "newChapter.doc"); newChapter.doc printQ
List methods – indexOf Example: finding “myFoto.jpg” int index = printQ.indexOf("myFoto.jpg"); if (index != -1) { System.out.println("myFoto.jpg is at index position: " + index); } else { System.out.println("myFoto.jpg not in list"); }
0 1 3 2 3 4 importantMemo.doc myLetter.doc results.xls chapter.doc newChapter.doc List methods – remove Example : removing "myFoto.jpg" printQ.remove(2); printQ.remove("myFoto.jpg"); 2 myFoto.jpg printQ
0 1 2 3 4 importantMemo.doc myLetter.doc myFoto.jpg results.xls chapter.doc newChapter.doc List methods – get System.out.println("First job is " + printQ.get(0)); First job is importantMemo.doc printQ
List methods – contains if (printQ.contains(“poem.doc”)) { System.out.println(“poem.doc is in the list”); } else { System.out.println(“poem.doc is not in the list”); }
Example: Iterating through the printQ list to find and display those jobs that end with a “.doc” extension: for (Stringitem: printQ) { if (item.endsWith(".doc")) { System.out.println(item); } }
The Set interface The Set interface defines the methods required to process a collection of objects in which there is no repetition, and ordering is unimportant.
Which of these are sets? • a queue of people waiting to see a doctor:
Which of these are sets? • a list of number one records for each of the 52 weeks of a particular year :
AK346NY QC771OD AZ885JL Which of these are sets? • car registration numbers allocated parking permits.
There are 2 implementations provided for the Set interface in the JCF. They are HashSet and TreeSet.
AK346NY QC771OD AZ885JL Using a HashSetto store a collection of vehicle registration numbers
The constructor creates an empty set: Set<String> regNums = new HashSet<String>();
The constructor creates an empty set: Set<String> regNums = new HashSet<String>(); Remember: use the interface type!
The constructor creates an empty set: Set<String> regNums = new HashSet<String>(); Remember: use generics!
Set methods - add The add method allows us to insert objects into the set regNums.add(“V53PLS”); regNums.add(“X85ADZ”); regNums.add(“L22SBG”); regNums.add(“W79TRV”);
Set methods - toString We can display the entire set as follows: System.out.println(regNums); The set is displayed in the same format as a list: [W79TRV, X85ADZ, V53PLS, L22SBG]
Set methods - size As with a list, the size method returns the number of items in the set System.out.println(“Number of items in set: ” + regNums.size() );
Set methods - remove The remove method deletes an item from the set if it is present. regNums.remove(“X85ADZ”); If we now display the set, the given registration will have been removed: [W79TRV, V53PLS, L22SBG]
The following enhanced for loop will allow us to iterate through the registration numbers and display all registrations after ‘T’. for (Stringitem: regNums) { if (item.charAt(0)> 'T') { System.out.println(item); } } W79TRV V53PLS [W79TRV, V53PLS, L22SBG]
An Iterator object allows the items in a collection to be retrieved by providing three methods defined in the Iterator interface:
To obtain an Iterator object from a set, call the iteratormethod.. Iterator<String> elements = regNums.iterator();