在java中写一个构造10000级的不规范字符串 分别针对hashmap、treemap进行生成、检索、删除操作记录十分之一上述数量级操作次数所耗费的时间进行比较得出结论。
首先,我们可以定义一个方法来生成一个指定长度的不规范字符串:
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的底层实现不同,它们在插入、查找和删除操作上的性能也不同。因此,对于不同的操作类型和数据规模,它们的表现可能不同。在实际应用中,需要根据具体的需求和数据特点选择合适的数据结构
原文地址: https://www.cveoy.top/t/topic/i0ZI 著作权归作者所有。请勿转载和采集!