配列からハッシュの変換は頻度のヒストグラムを作る時によく使います。
それを意識したものですが、もう少し改良すすれば汎用性が持たせられると
思いますが、どうでしょうか。

● 方針  ●
・衝突するものはブロックで処理
・一括でないと処理できない状況は思いつかないので無視(出来たらいいな)

class Ary2 < Array
  def to_hash
    hash = {}
    self.each do |item|
      break unless item
      value = item[1]
      if hash.has_key?(item[0])
	# キーが衝突した時の処理
	# 一括して処理したい場合をどうにかしたいけど。
	value = yield(hash[item[0]],value)
	hash[item[0]] = value
      else
	hash[item[0]] = value
      end
    end
    hash
  end
end

if $0 == __FILE__
  a0 = Ary2.new
  a0 << ['apple',150]
  a0 << ['banana',30]
  a0 << ['egg',20]
  a0 << ['apple',30]
  p a0
  # 衝突したら平均を返す
  p a0.to_hash{|a,b| print "collision\n";(a+b)/2}
end

● 結果 ●
[["apple", 150], ["banana", 30], ["egg", 20], ["apple", 30]]
collision
{"egg"=>20, "banana"=>30, "apple"=>90}

--