java - Map.clear() 与新 map : Which one will be better?

标签 java android performance collections

我有一个 Map 的语法为 Map<String, String> testMap = new HashMap<String, String>(); . 在这张 map 中可以有 1000 个数据。

当我的应用程序需要新的数据列表时,我必须清除 map 。但是当我看到 Map.clear() 的代码为

/**
     * Removes all of the mappings from this map.
     * The map will be empty after this call returns.
     */
    public void clear() {
        modCount++;
        Entry[] tab = table;
        for (int i = 0; i < tab.length; i++)
            tab[i] = null;
        size = 0;
    }

我意识到 clear 方法会循环 n 次(其中 n 是 Map 中的数据数)。所以我认为有一种方法可以将该 Map 重新定义为 testMap = new HashMap<String, String>(); 并且以前使用过的 map 将被垃圾收集。

但我不确定这是否是一个好方法。我正在开发移动应用程序。

你能指导我吗?

最佳答案

复杂的问题。让我们看看会发生什么。

您实例化一个新实例,该实例由新数组支持。因此,垃圾收集器应该清除之前映射中的所有键和值,并清除对自身的引用。所以 O(n) 算法无论如何都会执行,但是在垃圾收集器线程中。对于 1000 条记录,您不会看到任何差异。 但。业绩guide告诉您最好不要创建新对象,如果可以的话。所以我会使用 clear() 方法。

无论如何,尝试两种变体并尝试测量。始终测量!

关于java - Map.clear() 与新 map : Which one will be better?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6757868/

相关文章:

performance - OpenEJB 性能最高、最轻量的传输是什么?

java - 专用服务器上的elasticsearch RemoteTransportException

java - Spring @DateTimeFormat 在将 @PathVariable 转换为 Date 时正在更改时区

broadcastreceiver - 应用安装后删除 Apk

java - 单击按钮时无法打开新 Activity

java - 使用数组查找或 if else if 语句哪个更好?

java - hazelcast 客户端无法连接到服务器

java - JFrame组件: "Drag-Bar"?

android - 在Kotlin中使用itext5将表添加到现有PDF

sql - BigQuery 中的线索和分析功能