java - 如何使用哈希表查找重复和唯一的字符串条目

标签 java collections hashtable

假设我从命令行输入一个字符串,并且我想使用哈希表查找该字符串中的重复和唯一条目。

例如:

我/p:

嗨你好再见嗨好你好名字嗨一天嗨

o/p:

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

重复元素是:

嗨3次

你好2次

最佳答案

您可以通过对输入字符串调用 split("") 来拆分输入。这将返回一个代表每个单词的 String[]。迭代此数组,并使用每个字符串作为哈希表的键,值为整数。每次遇到单词时,请增加其值,或者如果当前没有值,则将该值设置为 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

关于java - 如何使用哈希表查找重复和唯一的字符串条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6105787/

相关文章:

c# - 使用 + 的字符串连接是否针对 .NET 中的 StringBuilder 实现进行了优化?

java.io.IOException 已建立的连接被主机中的软件中止

java - 使用 XStream 为 Set 的内容起别名

java - HashMap 不调用 Object.equals?

java - 为什么 fill、copy(dstList, srcList)、shuffle、reverse、rotate Collections 类方法只接受 List 作为参数?

java - 为什么 Hadoop API FSDataInputStream 读取小于缓冲区大小?

java - 如何在 libGDX 框架中匹配用户点击和 sprite 对象位置

c++ - 如何找到哈希表的大小?

c - 在 C 中初始化哈希表?

c - 如何在 c 中迭代和打印哈希表?