如何使用Hashtable查找重复和唯一的字符串条目

时间:2011-05-24 04:48:13

标签: java collections hashtable

假设我从命令行输入一个字符串,我想通过使用Hashtable在字符串中找到重复和唯一的条目。

例如:

I / P:

嗨,你好再见,你好名字嗨日喜欢

O / P:

独特的元素是:再见,好,名字,日

重复的元素是:

嗨3次

你好2次

3 个答案:

答案 0 :(得分:8)

您可以通过在输入字符串上调用split(" ")来分开输入。这将返回表示每个单词的String []。迭代这个数组,并使用每个String作为Hashtable的键,值为Integer。每次遇到一个单词时,要么递增其值,要么如果当前没有值,则将该值设置为0.

Hashtable<String, Integer> hashtable = new Hashtable<String, Integer>();
String[] splitInput = input.split(" ");
for(String inputToken : splitInput) {
    Integer val = hashtable.get(inputToken);
    if(val == null) {
        val = new Integer(0);
    }
    ++val;
    hashtable.put(inputToken, val);
}

此外,您可能希望查看HashMap而不是HashtableHashMap不是线程安全的,但速度更快。 Hashtable有点慢,但是线程安全。如果您尝试在单个帖子中执行此操作,我建议HashMap

答案 1 :(得分:3)

使用带有字符串作为键的哈希表和作为计数器的数字类型。

浏览所有单词,如果它们不在地图中,请插入;否则增加计数(哈希表的数据部分)。

HTH

马里奥

答案 2 :(得分:0)

您可以将每个字符串转换为整数。然后,使用生成的整数作为哈希值。要将字符串转换为int,您可以将其视为基数256,然后将其转换为