Presentation is loading. Please wait.

Presentation is loading. Please wait.

Java Collections CHAPTER 3-February-2003

Similar presentations


Presentation on theme: "Java Collections CHAPTER 3-February-2003"— Presentation transcript:

1 Java Collections CHAPTER 9 @geoffjuma 3-February-2003
07/14/16 Java Collections CHAPTER 9 @geoffjuma 3-February-2003 Java collection types

2 07/14/16 Agenda Lists Sets Maps 3-February-2003 Java collection types

3 Readings and References
07/14/16 Readings and References References "Collections", Java tutorial 3-February-2003 Java collection types

4 07/14/16 Java 2 Collections A collection is an object that groups multiple elements into a single unit Very useful store, retrieve and manipulate data transmit data from one method to another data structures and methods written by hotshots in the field 3-February-2003 Java collection types

5 07/14/16 Problem Example You want to develop a java application for a client in the matatu industry. The matatu carries passengers from a fixed location to a fixed destination but has several stops along the way where passengers can board and alight at will; The matatu can only carry a fixed number of passengers subject to the number of seats available. 3-February-2003 Java collection types

6 Collections Framework
07/14/16 Collections Framework Unified architecture for representing and manipulating collections. A collections framework contains three things Interfaces Implementations Algorithms 3-February-2003 Java collection types

7 Collections Framework Diagram
07/14/16 Collections Framework Diagram Interfaces, Implementations, and Algorithms From Thinking in Java, page 462 3-February-2003 Java collection types

8 Collection Interface Defines fundamental methods
07/14/16 Collection Interface Defines fundamental methods int size(); boolean isEmpty(); boolean contains(Object element); boolean add(Object element); // Optional boolean remove(Object element); // Optional Iterator iterator(); These methods are enough to define the basic behavior of a collection Provides an Iterator to step through the elements in the Collection 3-February-2003 Java collection types

9 Iterator Interface Defines three fundamental methods
07/14/16 Iterator Interface Defines three fundamental methods Object next() boolean hasNext() void remove() These three methods provide access to the contents of the collection An Iterator knows position within collection Each call to next() “reads” an element from the collection Then you can use it or remove it 3-February-2003 Java collection types

10 07/14/16 Iterator Position 3-February-2003 Java collection types

11 Example - SimpleCollection
07/14/16 Example - SimpleCollection public class SimpleCollection { public static void main(String[] args) { Collection c; c = new ArrayList(); System.out.println(c.getClass().getName()); for (int i=1; i <= 10; i++) { c.add(i + " * " + i + " = "+i*i); } Iterator iter = c.iterator(); while (iter.hasNext()) System.out.println(iter.next()); 3-February-2003 Java collection types

12 List Interface Context
07/14/16 List Interface Context Collection List 3-February-2003 Java collection types

13 07/14/16 List Interface The List interface adds the notion of order to a collection The user of a list has control over where an element is added in the collection Lists typically allow duplicate elements Provides a ListIterator to step through the elements in the list. 3-February-2003 Java collection types

14 ListIterator Interface
07/14/16 ListIterator Interface Extends the Iterator interface Defines three fundamental methods void add(Object o) - before current position boolean hasPrevious() Object previous() The addition of these three methods defines the basic behavior of an ordered list A ListIterator knows position within list 3-February-2003 Java collection types

15 Iterator Position - next(), previous()
07/14/16 Iterator Position - next(), previous() 3-February-2003 Java collection types

16 ArrayList and LinkedList Context
07/14/16 ArrayList and LinkedList Context Collection List ArrayList LinkedList 3-February-2003 Java collection types

17 List Implementations ArrayList LinkedList low cost random access
07/14/16 List Implementations ArrayList low cost random access high cost insert and delete array that resizes if need be LinkedList sequential access low cost insert and delete high cost random access 3-February-2003 Java collection types

18 ArrayList overview Constant time positional access (it’s an array)
07/14/16 ArrayList overview Constant time positional access (it’s an array) One tuning parameter, the initial capacity ArrayList supports dynamic arrays that can grow as needed. Standard Java arrays are of a fixed length. After arrays are created, they cannot grow or shrink, which means that you must know in advance how many elements an array will hold. 3-February-2003 Java collection types

19 07/14/16 ArrayList methods The indexed get and set methods of the List interface are appropriate to use since ArrayLists are backed by an array Object get(int index) Object set(int index, Object element) Indexed add and remove are provided, but can be costly if used frequently void add(int index, Object element) Object remove(int index) May want to resize in one shot if adding many elements void ensureCapacity(int minCapacity) 3-February-2003 Java collection types

20 07/14/16 ArrayList 3-February-2003 Java collection types

21 LinkedList overview Stores each element in a node
07/14/16 LinkedList overview Stores each element in a node Each node stores a link to the next and previous nodes Insertion and removal are inexpensive just update the links in the surrounding nodes Linear traversal is inexpensive Random access is expensive Start from beginning or end and traverse each node while counting 3-February-2003 Java collection types

22 LinkedList entries 3-February-2003 Java collection types
07/14/16 LinkedList entries private static class Entry { Object element; Entry next; Entry previous; Entry(Object element, Entry next, Entry previous) { this.element = element; this.next = next; this.previous = previous; } private Entry header = new Entry(null, null, null); public LinkedList() { header.next = header.previous = header; 3-February-2003 Java collection types

23 07/14/16 Linked List Example 3-February-2003 Java collection types

24 LinkedList methods The list is sequential, so access it that way
07/14/16 LinkedList methods The list is sequential, so access it that way ListIterator listIterator() ListIterator knows about position use add() from ListIterator to add at a position use remove() from ListIterator to remove at a position LinkedList knows a few things too void addFirst(Object o), void addLast(Object o) Object getFirst(), Object getLast() Object removeFirst(), Object removeLast() 3-February-2003 Java collection types

25 Set Interface Context Collection Set 3-February-2003
07/14/16 Set Interface Context Collection Set 3-February-2003 Java collection types

26 Set Interface Java's java.util.Set interface defines the set.
07/14/16 Set Interface Java's java.util.Set interface defines the set. A set can't have any duplicate elements in it. Additionally, the set has no set order. As such, elements can't be found by index. Same methods as Collection different contract - no duplicate entries Defines two fundamental methods boolean add(Object o) - reject duplicates Iterator iterator() 3-February-2003 Java collection types

27 Hash Set Hash sets are sets that use hashes to store elements.
07/14/16 Hash Set Hash sets are sets that use hashes to store elements. A hashing algorithm is an algorithm that takes an element and converts it to a chunk of a fixed size called a hash. For example, let our hashing algorithm be (x mod 10). So the hashes of 232, 217 and 19 are 2,7, and 9 respectively 3-February-2003 Java collection types

28 HashSet Find and add elements very quickly
07/14/16 HashSet Find and add elements very quickly uses hashing implementation in HashMap Hashing uses an array of linked lists The hashCode() is used to index into the array Then equals() is used to determine if element is in the (short) list of elements at that index No order imposed on elements The hashCode() method and the equals() method must be compatible if two objects are equal, they must have the same hashCode() value 3-February-2003 Java collection types

29 07/14/16 Hash Code 3-February-2003 Java collection types

30 07/14/16 Buckets 3-February-2003 Java collection types

31 HashSet and TreeSet Context
07/14/16 HashSet and TreeSet Context Collection Set HashSet TreeSet 3-February-2003 Java collection types

32 07/14/16 Tree Set TreeSet provides an implementation of the Set interface that uses a tree for storage. Objects are stored in sorted, ascending order. Access and retrieval times are quite fast, which makes TreeSet an excellent choice when storing large amounts of sorted information that must be found quickly. 3-February-2003 Java collection types

33 TreeSet Elements can be inserted in any order
07/14/16 TreeSet Elements can be inserted in any order The TreeSet stores them in order Red-Black Trees out of Cormen-Leiserson-Rivest An iterator always presents them in order Default order is defined by natural order objects implement the Comparable interface TreeSet uses compareTo(Object o) to sort Can use a different Comparator provide Comparator to the TreeSet constructor 3-February-2003 Java collection types

34 Map Interface Context Map 3-February-2003 Java collection types
07/14/16 Map Interface Context Map 3-February-2003 Java collection types

35 Map Interface Stores key/value pairs Maps from the key to the value
07/14/16 Map Interface Stores key/value pairs Maps from the key to the value Keys are unique a single key only appears once in the Map a key can map to only one value Values do not have to be unique 3-February-2003 Java collection types

36 Map methods Object put(Object key, Object value)
07/14/16 Map methods Object put(Object key, Object value) Object get(Object key) Object remove(Object key) boolean containsKey(Object key) boolean containsValue(Object value) int size() boolean isEmpty() 3-February-2003 Java collection types

37 Map views A means of iterating over the keys and values in a Map
07/14/16 Map views A means of iterating over the keys and values in a Map Set keySet() returns the Set of keys contained in the Map Collection values() returns the Collection of values contained in the Map. This Collection is not a Set, as multiple keys can map to the same value. Set entrySet() returns the Set of key-value pairs contained in the Map. The Map interface provides a small nested interface called Map.Entry that is the type of the elements in this Set. 3-February-2003 Java collection types

38 HashMap and TreeMap Context
07/14/16 HashMap and TreeMap Context Map HashMap TreeMap 3-February-2003 Java collection types

39 HashMap and TreeMap HashMap TreeMap
07/14/16 HashMap and TreeMap HashMap The keys are a set - unique, unordered Fast TreeMap The keys are a set - unique, ordered Same options for ordering as a TreeSet Natural order (Comparable, compareTo(Object)) Special order (Comparator, compare(Object, Object)) 3-February-2003 Java collection types

40 07/14/16 Bulk Operations In addition to the basic operations, a Collection may provide “bulk” operations boolean containsAll(Collection c); boolean addAll(Collection c); // Optional boolean removeAll(Collection c); // Optional boolean retainAll(Collection c); // Optional void clear(); // Optional Object[] toArray(); Object[] toArray(Object a[]); 3-February-2003 Java collection types

41 07/14/16 Utilities Context 3-February-2003 Java collection types

42 07/14/16 Utilities The Collections class provides a number of static methods for fundamental algorithms Most operate on Lists, some on all Collections Sort, Search, Shuffle Reverse, fill, copy Min, max Wrappers synchronized Collections, Lists, Sets, etc unmodifiable Collections, Lists, Sets, etc 3-February-2003 Java collection types

43 Legacy classes Still available Don’t use for new development
07/14/16 Legacy classes Still available Don’t use for new development unless you have to, eg, J2ME, J2EE in some cases Retrofitted into Collections framework Hashtable use HashMap Enumeration use Collections and Iterators if needed, can get an Enumeration with Collections.enumeration(Collection c) 3-February-2003 Java collection types

44 More Legacy classes Vector Stack BitSet Properties use ArrayList
07/14/16 More Legacy classes Vector use ArrayList Stack use LinkedList BitSet use ArrayList of boolean, unless you can’t stand the thought of the wasted space Properties legacies are sometimes hard to walk away from … see next few pages 3-February-2003 Java collection types

45 Properties class Located in java.util package
07/14/16 Properties class Located in java.util package Special case of Hashtable Keys and values are Strings Tables can be saved to/loaded from file 3-February-2003 Java collection types

46 07/14/16 System properties Java VM maintains set of properties that define system environment Set when VM is initialized Includes information about current user, VM version, Java environment, and OS configuration Properties prop = System.getProperties(); Enumeration e = prop.propertyNames(); while (e.hasMoreElements()) { String key = (String) e.nextElement(); System.out.println(key + " value is " + prop.getProperty(key)); } 3-February-2003 Java collection types


Download ppt "Java Collections CHAPTER 3-February-2003"

Similar presentations


Ads by Google