1 // Example 4.4 joi/examples/TreeMapDemo.java 2 // 3 // 4 // Copyright 2003 Bill Campbell and Ethan Bolker 5 6 import java.util.TreeMap; 7 import java.util.Iterator; 8 import java.util.Set; 9 import java.util.Collection; 10 import java.util.Map; 11 12 // A class illustrating the use of TreeMap. A typical run: 13 // 14 // %> java TreeMapDemo 15 // Store 3 wrapped ints, keys "one", "two", "three". 16 // The wrapped int stored for "two" is 2 17 // 18 // Iterate over keys, get each value. 19 // Note that key order is aphabetical: 20 // The value for key one is 1 21 // The value for key three is 3 22 // The value for key two is 2 23 // 24 // Iterate over the values: 25 // 1 26 // 3 27 // 2 28 // 29 // Iterate over the key-value pairs: 30 // The value for the entry with key one is 1 31 // The value for the entry with key three is 3 32 // The value for the entry with key two is 2 33 // 34 // How a TreeMap represents itself as a String: 35 // {one=1, three=3, two=2} 36 // 37 // Store a different value at key "two" 38 // {one=1, three=3, two=2222} 39 // 40 // Store map.get( "one" ) at key "two" 41 // {one=1, three=3, two=1} 42 // 43 // A TreeMap with Integer keys mapping to String values 44 // {1=I, 2=II, 3=III} 45 // %> 46 47 public class TreeMapDemo 48 { 49 public static void main( String[] args ) 50 { 51 Terminal terminal = new Terminal(); // for input and output 52 53 TreeMap map = new TreeMap(); 54 55 // Put in some ints (each wrapped up as an Integer object) 56 terminal.println( 57 "Store 3 wrapped ints, keys \"one\", \"two\", \"three\"."); 58 map.put("one", new Integer(1) ); 59 map.put("two", new Integer(2) ); 60 map.put("three", new Integer(3) ); 61 62 // get the value associated with a key; 63 // notice the required cast. 64 Integer wrappedInt = (Integer) map.get( "two" ); 65 66 // And print the wrapped int 67 terminal.println( "The wrapped int stored for \"two\" is " 68 + wrappedInt); 69 70 71 // The set of keys. 72 Set keys = map.keySet(); 73 // The iterator over this "set" of keys will return 74 // the keys in key-order. 75 terminal.println( "\nIterate over keys, get each value." ); 76 terminal.println( "Note that key order is aphabetical:" ); 77 Iterator keysIterator = keys.iterator(); 78 while ( keysIterator.hasNext() ) { 79 String key = (String) keysIterator.next(); 80 terminal.println( "The value for key " + key + " is " 81 + ((Integer) map.get( key)) ); 82 } 83 84 // Iterate over the collection of values; 85 // notice the order is the same (ie the key-order). 86 terminal.println( "\nIterate over the values:" ); 87 Iterator valuesIterator = map.values().iterator(); 88 while ( valuesIterator.hasNext() ) { 89 terminal.println( ((Integer) valuesIterator.next())); 90 } 91 92 // The set of Map.Entry objects (key-value pairs); 93 // Map.Entry is an inner class of Map. 94 95 // Iterate over the entries. 96 terminal.println( "\nIterate over the key-value pairs:" ); 97 Iterator entriesIterator = map.entrySet().iterator(); 98 while ( entriesIterator.hasNext() ) { 99 Map.Entry entry = (Map.Entry) entriesIterator.next(); 100 terminal.println( "The value for the entry with key " 101 + entry.getKey() + " is " 102 + ((Integer) entry.getValue())); 103 } 104 105 // how a TreeMap represents itself as a String: 106 terminal.println( 107 "\nHow a TreeMap represents itself as a String:"); 108 terminal.println(map.toString()); 109 terminal.println(); 110 111 // We can overwrite the value stored under a key 112 terminal.println( 113 "Store a different value at key \"two\""); 114 map.put("two", new Integer(2222)); 115 terminal.println(map.toString()); 116 terminal.println(); 117 118 // We can store the same value under two keys 119 terminal.println( 120 "Store map.get( \"one\" ) at key \"two\""); 121 map.put("two", map.get( "one" ) ); 122 terminal.println(map.toString()); 123 terminal.println(); 124 125 // And keys don't necessarily have to be Strings; 126 // Here's a TreeMap mapping Integers to strings. 127 terminal.println( 128 "A TreeMap with Integer keys mapping to String values"); 129 map = new TreeMap(); 130 map.put( new Integer( 1 ), "I" ); 131 map.put( new Integer( 2 ), "II" ); 132 map.put( new Integer( 3 ), "III" ); 133 terminal.println(map.toString()); 134 terminal.println(); 135 } 136 }