首先,我们可以定义一个方法来生成一个指定长度的不规范字符串:

import java.util.Random;

public class RandomStringGenerator {

    public static String generate(int length) {
        Random random = new Random();
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < length; i++) {
            sb.append((char) (random.nextInt(26) + 'a'));
        }
        return sb.toString();
    }
}

接下来,我们可以编写一个测试类来进行比较:

import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;

public class Main {

    public static void main(String[] args) {
        int num = 10000;
        int operations = num / 10;
        String[] keys = new String[num];
        for (int i = 0; i < num; i++) {
            keys[i] = RandomStringGenerator.generate(10);
        }

        // HashMap
        Map<String, Integer> hashMap = new HashMap<>();
        long startTime = System.currentTimeMillis();
        for (int i = 0; i < operations; i++) {
            hashMap.put(keys[i], i);
        }
        for (int i = 0; i < operations; i++) {
            hashMap.get(keys[i]);
        }
        for (int i = 0; i < operations; i++) {
            hashMap.remove(keys[i]);
        }
        long endTime = System.currentTimeMillis();
        System.out.println('HashMap time: ' + (endTime - startTime) + 'ms');

        // TreeMap
        Map<String, Integer> treeMap = new TreeMap<>();
        startTime = System.currentTimeMillis();
        for (int i = 0; i < operations; i++) {
            treeMap.put(keys[i], i);
        }
        for (int i = 0; i < operations; i++) {
            treeMap.get(keys[i]);
        }
        for (int i = 0; i < operations; i++) {
            treeMap.remove(keys[i]);
        }
        endTime = System.currentTimeMillis();
        System.out.println('TreeMap time: ' + (endTime - startTime) + 'ms');
    }
}

运行上述代码,可以得到 HashMap 和 TreeMap 在不同数量级操作下所耗费的时间。根据比较结果,就可以得出结论。

需要注意的是,由于 HashMap 和 TreeMap 的底层实现不同,它们在插入、查找和删除操作上的性能也不同。因此,对于不同的操作类型和数据规模,它们的表现可能不同。在实际应用中,需要根据具体的需求和数据特点选择合适的数据结构。

Java 中 HashMap 和 TreeMap 性能比较:10000 级不规范字符串测试

原文地址: https://www.cveoy.top/t/topic/o4NY 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录