CSC/ECE 517 Fall 2007/wiki1 1 ss
Compare hashes in Ruby with HashMaps in Java
Hashes are lookup tables, and are very similar to functions, in a way. You pass something into a Hash, and you receive one thing from it. That one thing never changes unless you either change what you pass into the Hash, or you change the internals of the Hash.
Hashes in Ruby
As you can see below, you declare a Hash with braces. The items to the left of the => are the keys of the Hash, while the items to the right of the => are the values of the Hash. If you pass in one of the keys, the Hash will return the matching value.
carLookup = {“Volkswagen"=>"Gti", "Nissan"=>"Altima", "Toyota"=>"Camry", "Scion"=>"tc"}
Hashmaps in Java
A list of key/value pairs is called HashMap and or HashTable in Java. They are under Java's java.util.* classes among other general list type of datatypes
carLookup = new HashMap(); carLookup.put("Volkswagen", "Gti"); carLookup.put("Nissan", "Altima"); carLookup.put("Toyota", "Camry"); carLookup.put("Scion", "tc");
Similarities/ Differences
- Like Java's HashMaps, a Ruby Hash is an object.
- Unlike Java's HashMap, in a Ruby Hash, you use braces instead of brackets, and you use key=>value to define one key-value pair.
- There’s a lot of syntactical sugar in Ruby, as compared to Java and you see can it by comparing the code.
Other descriptions on web
- http://www.brainbell.com/tutorials/java/About_Ruby.htm
- http://www.jroller.com/wireframe/entry/ruby_syntax_for_java_maps
Example Java Implementation
import java.util.*; public class HashTest { static HashMap carLookup; public static void main(String[] args) { carLookup = new HashMap();
carLookup.put("Volkswagen", "Gti"); carLookup.put("Nissan", "Altima"); carLookup.put("Toyota", "Camry"); carLookup.put("Scion", "tc");
if(args.length > 0) { if (carLookup.get(args[0])!=null) { System.out.println("The midsize car for" + args[0] + " is " + carLookup.get(args[0])); } else { System.out.println("Car is not a midsize"); } } else { System.out.println("Please enter a Car company"); }
} }
References
Ruby by Example: Concepts and Code by Kevin Baird