假设我从命令行输入一个字符串,我想通过使用Hashtable在字符串中找到重复和唯一的条目。
例如:
I / P:
嗨,你好再见,你好名字嗨日喜欢
O / P:
独特的元素是:再见,好,名字,日
重复的元素是:
嗨3次
你好2次
答案 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
而不是Hashtable
。 HashMap
不是线程安全的,但速度更快。 Hashtable
有点慢,但是线程安全。如果您尝试在单个帖子中执行此操作,我建议HashMap
。
答案 1 :(得分:3)
使用带有字符串作为键的哈希表和作为计数器的数字类型。
浏览所有单词,如果它们不在地图中,请插入;否则增加计数(哈希表的数据部分)。
HTH
马里奥
答案 2 :(得分:0)
您可以将每个字符串转换为整数。然后,使用生成的整数作为哈希值。要将字符串转换为int,您可以将其视为基数256,然后将其转换为