/* * ====================================================================== * Compilation: javac SymbolTable.java * Execution: java SymbolTable * * Symbol table implementation using Java's HashMap library. * If you add a key-value pair and the key is already present, * the new key-value pair replaces the old one. * ====================================================================== */ import java.util.HashMap; import java.util.Set; import java.util.Iterator; import java.util.Map; public class SymbolTable { private HashMap st = new HashMap(); public void put(String key, Object value) { st.put(key, value); } public Object get(String key) { return st.get(key); } public String toString() { return st.toString(); } // Return an array contains all of the keys public String[] keys() { Set keyvalues = st.entrySet(); String[] keys = new String[st.size()]; Iterator it = keyvalues.iterator(); for (int i = 0; i < st.size(); i++) { Map.Entry entry = (Map.Entry) it.next(); keys[i] = (String) entry.getKey(); } return keys; } /*********************************************************************** * Test routine. **********************************************************************/ public static void main(String[] args) { SymbolTable st = new SymbolTable(); // Create metro stations .... MetroStation gA = new MetroStation( "Greenbelt", 100.0, 100.0 ); gA.setParking( true ); MetroStation gB = new MetroStation("College Park", 100.0, 80.0 ); gB.setParking( true ); MetroStation gC = new MetroStation( "Silver Spring", 70.0, 90.0 ); gC.setParking( true ); MetroStation gD = new MetroStation( "Fort Totten", 70.0, 70.0 ); gD.setParking( false ); MetroStation gE = new MetroStation( "Union Station", 50.0, 50.0 ); gE.setParking( false ); MetroStation gF = new MetroStation( "DuPont Circle", 20.0, 60.0 ); gF.setParking( false ); MetroStation gG = new MetroStation( "Catholic University", 60.0, 60.0 ); gG.setParking( false ); // Insert some (key, value pairs) st.put( "Greenbelt", gA ); st.put( "College Park", gB ); st.put( "Silver Spring", gC ); st.put( "Fort Totten", gD ); st.put( "Union Station", gE ); st.put( "DuPont Circle", gF ); st.put( "Catholic University", gG ); // Define stations along the green and red lines .... String redLine[] = { "Silver Spring", "Fort Totten", "Catholic University", "Union Station", "DuPont Circle" }; String greenLine[] = { "Greenbelt", "College Park", "Fort Totten" }; // Add track assignments to Metro Station Descriptions .... for ( int i = 0; i < redLine.length; i = i + 1 ) { MetroStation m = (MetroStation) st.get( redLine[i] ); m.add("Red"); } for ( int j = 0; j < greenLine.length; j = j + 1 ) { MetroStation m = (MetroStation) st.get( greenLine[j] ); m.add("Green"); } // Ride along track and retrieve station information. System.out.println( st.get( "Greenbelt").toString() ); System.out.println( st.get( "College Park").toString() ); System.out.println( st.get( "Fort Totten").toString() ); System.out.println( st.get( "DuPont Circle").toString() ); } }