zoukankan      html  css  js  c++  java
  • ruby的hash学习笔记例: 将字符串文本中的单词存放在map中

    text = 'The rain in Spain falls mainly in the plain.'
    first = Hash.new []
    second = Hash.new {|hash,key| hash[key] = []}


    text.split(/W+/).each do |word|
    p "word: #{word}"
    p first[word[0, 1].downcase].object_id
    first[word[0, 1].downcase] << word
    p first[word[0, 1].downcase]
    end
    p first

    "word: The"
    46999283958220  这里是关键。每次都是引用同一个数组。
    ["The"]
    "word: rain"
    46999283958220
    ["The", "rain"]
    "word: in"
    46999283958220
    ["The", "rain", "in"]
    "word: Spain"
    46999283958220
    ["The", "rain", "in", "Spain"]
    "word: falls"
    46999283958220
    ["The", "rain", "in", "Spain", "falls"]
    "word: mainly"
    46999283958220
    ["The", "rain", "in", "Spain", "falls", "mainly"]
    "word: in"
    46999283958220
    ["The", "rain", "in", "Spain", "falls", "mainly", "in"]
    "word: the"
    46999283958220
    ["The", "rain", "in", "Spain", "falls", "mainly", "in", "the"]
    "word: plain"
    46999283958220
    ["The", "rain", "in", "Spain", "falls", "mainly", "in", "the", "plain"]
    {}


    text.split(/W+/).each do |word|
    p "word: #{word}"
    p second[word[0, 1].downcase].object_id
    second[word[0, 1].downcase] << word
    p second[word[0, 1].downcase]
    end
    p second
    "word: The"
    46999283949940
    ["The"]
    "word: rain"
    46999283924940  这里按照key取,不同的key对应不同的数组
    ["rain"]
    "word: in"
    46999283924440
    ["in"]
    "word: Spain"
    46999283923920
    ["Spain"]
    "word: falls"
    46999283923420
    ["falls"]
    "word: mainly"
    46999283922920
    ["mainly"]
    "word: in"
    46999283924440
    ["in", "in"]
    "word: the"
    46999283949940
    ["The", "the"]
    "word: plain"
    46999283921440
    ["plain"]
    {"t"=>["The", "the"], "r"=>["rain"], "i"=>["in", "in"], "s"=>["Spain"], "f"=>["falls"], "m"=>["mainly"], "p"=>["plain"]}


  • 相关阅读:
    2. Redis哨兵、复制、集群的设计原理与区别
    1. 详解Redis的存储类型、集群架构、以及应用场景
    博客园主题优化
    【Java基础】Java面试题精选
    【Java集合】——集合类分析总结
    新零售供应链的三大闭环
    Comparable和Comparator比较实现排序 场景分析
    Java基础-枚举类
    Java基础-泛型
    微服务架构~BFF和网关
  • 原文地址:https://www.cnblogs.com/or2-/p/5011405.html
Copyright © 2011-2022 走看看