//分别向HaspMap及Hashtable内输入Person对象,person对象包括:id,name,age. 输入时使用id为key.遍历Hashtable,HashMap,比较他们的速度。
时间: 2024-02-18 15:06:30 浏览: 25
下面是代码示例:
```java
import java.util.*;
public class HashMapVsHashtable {
public static void main(String[] args) {
int n = 1000000;
Map<Integer, Person> hashMap = new HashMap<>();
Map<Integer, Person> hashtable = new Hashtable<>();
// 向HashMap和Hashtable中添加数据
for (int i = 0; i < n; i++) {
Person person = new Person(i, "name" + i, i % 100);
hashMap.put(person.getId(), person);
hashtable.put(person.getId(), person);
}
// 遍历HashMap并计时
long startTime = System.currentTimeMillis();
for (Map.Entry<Integer, Person> entry : hashMap.entrySet()) {
Integer key = entry.getKey();
Person value = entry.getValue();
}
long endTime = System.currentTimeMillis();
System.out.println("HashMap遍历时间:" + (endTime - startTime) + "ms");
// 遍历Hashtable并计时
startTime = System.currentTimeMillis();
Enumeration<Integer> keys = hashtable.keys();
while (keys.hasMoreElements()) {
Integer key = keys.nextElement();
Person value = hashtable.get(key);
}
endTime = System.currentTimeMillis();
System.out.println("Hashtable遍历时间:" + (endTime - startTime) + "ms");
}
}
class Person {
private int id;
private String name;
private int age;
public Person(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
```
这段代码会向HashMap和Hashtable中各添加1000000个Person对象,并分别遍历它们的所有元素,并输出遍历时间。可以通过比较HashMap和Hashtable的遍历时间来比较它们的速度。通常情况下,HashMap的速度会比Hashtable更快,因为HashMap是线程不安全的,所以不需要进行同步操作。但是在多线程环境下,Hashtable的速度可能会更快。