# collections.rb # Arrays # declare/initialize an Array # nums =[] nums = Array.new nums[0]=52 nums[3]=39 nums[2]=nil nums[1]="string" puts nums puts "======================" thisarray = ["first", "second", "third", "second", "first"] puts thisarray.join("**") # non destructive uniq puts "========== uniq ============" puts thisarray.uniq puts "========== original unchanged ===========" puts thisarray # destructive uniq puts "============ destructive uniq ==========" thisarray.uniq! puts thisarray # Hashes # declare/initialize a Hash foodgroups = { 'apple' => 'fruit', 'pear' => 'fruit', 'carrot' => 'vegetable', 'peas' => 'vegetable', 'pineapple' => 'fruit' } puts foodgroups # add a new element or change an existing one foodgroups['dogfood'] = '???' foodgroups['peas'] = 'protein' puts foodgroups puts "======================" foodgroups.each do |item| puts item end puts "========== Hash Keys Only ============" foodgroups.keys.each do |item| puts item end puts "========== Hash Values Only ============" foodgroups.values.each do |item| puts item end puts "========== Hash Keys and Values ============" foodgroups.each { |key, value| puts key + "=>" + value } puts "========== Hash Keys Sorted ============" # keys returns an Array sortedbyfoodgroups = foodgroups.keys.sort_by do |item| item end sortedbyfoodgroups.each { | food | puts food } puts "========== Hash values sorted by Key, then array in reverse order ============" sortedbyfoodgroups = foodgroups.values.sort_by do |item| item end.reverse sortedbyfoodgroups.each { | food | puts food }