【问题标题】:Hashtable help- using stringsHashtable 帮助 - 使用字符串
【发布时间】:2012-09-22 21:57:31
【问题描述】:

我想获取一个 String str 和一个 int wSize 并用它来创建一个哈希表。一个例子是解释我想要什么的最佳方式。

例如: str = "字母" wSize = 2

我想要一个如下所示的哈希表: 人0 LP 1 ph 2 公顷 3 4 是 5 等6

这是我目前所拥有的

public static void hashTableCreator (String str, int wSize) {
    Hashtable ht = new Hashtable();
    str = "alphabet";
    wSize = 2;
    String str2;

    for (int i = 0; i < str.length(); i++) {
      int value = 0;
      ht.put(str.substring(i, i + 1), value);
      value++;
    }

    Set set = ht.keySet(); 

    Iterator itr = set.iterator();
    while(itr.hasNext()) {
      str2 = (String) itr.next();
      System.out.println(str2 + ": " +
                         ht.get(str2));
    }

  }

【问题讨论】:

  • 我不明白,您的方法中有参数,但您在下一行为它们设置值。参数的意义何在?
  • 问题是我将如何实现我想要的东西。并且参数是供以后使用的,这只是我想测试的一个例子。
  • 您已经实现了它,正如您在问题中所显示的那样。那么真正的问题是什么?

标签: java string hashtable


【解决方案1】:

在 string.substring(a,b) 中,第一个参数是零索引的,第二个参数是 1 索引的。 例如:

      "smiles".substring(1, 5) returns "mile"

如果你想从字符串“alphabet”中得到 al,你必须这样做

         LinkedHashMap<String, Integer> ht = new LinkedHashMap<String, Integer>();
 int value=0;
     for(int i=0; i<str.length()-1; i++) {
         ht.put(str.substring(i, i+2), value);
         value++;
     }
     Set<String> set = ht.keySet();
     Iterator<String> itr = set.iterator();
     while(itr.hasNext()) {
         String d = itr.next();
         System.out.println(d+ " "+ ht.get(d));
     }
    }

输出: al 0 LP 1 ph 2 公顷 3 4 是 5 等6

【讨论】:

  • 字符串索引越界,因为当它结束时我遇到了问题
  • 在 for: - (i
【解决方案2】:
int value = 0;
for (int i = 0; i < str.length()-1; i++) {
  ht.put(str.substring(i, i + 2), value);
  value++;
}

【讨论】:

  • 为什么每次迭代都将 value 初始化为 0?
  • 谢谢,我运行代码得到了这个 ha: 3 lp: 1 be: 5 ab: 4 et: 6 al: 0 ph: 2
  • 我希望它被订购,这可能吗?顺便说一句,你们太棒了
  • 如果您希望在插入时对其进行排序,请使用 LinkedHashMap。
  • 这将如何工作?你能给我推荐一些阅读材料吗?谢谢
猜你喜欢
  • 1970-01-01
  • 2010-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多