java - 删除 Hashtable 的内容或只是实例化一个新的 Hashtable?

标签 java

我有一个响应移动的应用程序。

监听器似乎在一个 Action 中被调用多次,即如果我将应用程序从监视器的一部分拖到另一部分。

发生这种情况时,我将一些数据存储到哈希表中。每次存储数据时,我都需要存储到一个空的 Hashtable 中。

每次都删除 Hashtable 的内容会更好还是我可以只实例化一个新的 Hashtable(使用相同的变量)?哈希表将包含不超过 5 个键/值对。

后一种方法会开始消耗过多内存,还是 Java 垃圾收集器会足够快地释放这些内存?

最佳答案

除了选择不可变还是可变 Map 之外,您还需要在

  • 是否希望每次更改都立即在 HashMap 中可见
  • 或者您可以将更改事件写入队列并定期将它们刷新到 HashMap,这将确保您的 HashMap 不会像第一种解决方案那样频繁写入,并且可以为您带来性能优势 + 响应能力(放入队列是比放入 HashMap 更轻的操作)。

我建议您继续尝试这两种方法,分析然后找出答案。

必须优先考虑代码的清晰度和可理解性。如果更清晰的方法(这里使用不可变的 HashMap)的性能影响不是难以忍受,那么就去做吧。

关于java - 删除 Hashtable 的内容或只是实例化一个新的 Hashtable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38908988/

相关文章:

java - 线程进度条 fragment

java - 查找字符串的所有子字符串 - StringIndexOutOfBoundsException

java - 如何将其转换为 lambda 表达式?

java - Java 中的 SAX 解析器

java - mockito.AdditionalAnswers.returnsFirstArg() 用于重载方法

java - 尝试在 Java 中运行 PostFixCalculator 时出现 NullPointerException

java - org.hibernate.exception.JDBCConnectionException : Could not open connection exception in MySQL

java - felix exthttpservice 设置 cookie 的 session 路径

java - GWT-libGDX平台特定代码

java:多维泛型数组创建