分别向HaspMap及Hashtable内输入Person对象,person对象包括:id,name,age. 输入时使用id为key.遍历Hashtable,HashMap,比较他们的速度。
时间: 2024-03-01 17:50:16 浏览: 53
Hashtable和HashMap的区别:
好的,以下是Java代码示例,演示如何向HashMap和Hashtable中添加Person对象,并对他们进行遍历:
```java
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Map;
public class Main {
public static void main(String[] args) {
// 创建HashMap对象
Map<Integer, Person> hashMap = new HashMap<>();
// 创建Hashtable对象
Map<Integer, Person> hashtable = new Hashtable<>();
// 添加Person对象到HashMap
long startTime1 = System.nanoTime();
for (int i = 0; i < 1000000; i++) {
Person person = new Person(i, "name" + i, i % 100);
hashMap.put(person.getId(), person);
}
long endTime1 = System.nanoTime();
// 添加Person对象到Hashtable
long startTime2 = System.nanoTime();
for (int i = 0; i < 1000000; i++) {
Person person = new Person(i, "name" + i, i % 100);
hashtable.put(person.getId(), person);
}
long endTime2 = System.nanoTime();
// 遍历HashMap并输出结果
long startTime3 = System.nanoTime();
for (Map.Entry<Integer, Person> entry : hashMap.entrySet()) {
System.out.println(entry.getValue());
}
long endTime3 = System.nanoTime();
// 遍历Hashtable并输出结果
long startTime4 = System.nanoTime();
for (Map.Entry<Integer, Person> entry : hashtable.entrySet()) {
System.out.println(entry.getValue());
}
long endTime4 = System.nanoTime();
// 输出HashMap和Hashtable执行时间
System.out.println("HashMap添加元素耗时:" + (endTime1 - startTime1) + "纳秒");
System.out.println("Hashtable添加元素耗时:" + (endTime2 - startTime2) + "纳秒");
System.out.println("HashMap遍历耗时:" + (endTime3 - startTime3) + "纳秒");
System.out.println("Hashtable遍历耗时:" + (endTime4 - startTime4) + "纳秒");
}
}
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;
}
@Override
public String toString() {
return "Person{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
```
上述代码会向HashMap和Hashtable分别添加100万个Person对象,并在遍历它们时输出每个Person对象的详细信息。最后,程序会输出向HashMap和Hashtable添加元素的耗时以及遍历它们的耗时。
需要注意的是,HashMap是线程不安全的,而Hashtable是线程安全的。因此,在多线程的情况下,Hashtable可能比HashMap的执行效率更低。
阅读全文