Source: http://www.sitepoint.com/series/a-guide-to-ruby-collections/