分别向HaspMap及Hashtamje内输入Person对象,person对象包括:id,name,age.输入时使用id为key.遍历Hashtable,HashMap.比较他们的速度。
时间: 2024-02-25 08:59:15 浏览: 52
基于HashMap遍历和使用方法(详解)
好的,这是一个关于Java的问题。我来给您解答一下。
首先,HashMap和Hashtable都是Java中用来存储key-value键值对的数据结构。它们的主要区别是:
1. 线程安全性:Hashtable是线程安全的,而HashMap不是。因此,在多线程环境下,通常建议使用Hashtable,而在单线程环境下,使用HashMap可以获得更好的性能。
2. Null值:Hashtable不允许key或value为null,而HashMap允许key或value为null。
接下来,我们来看如何向HashMap和Hashtable中输入Person对象。
```
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map<Integer, Person> hashMap = new HashMap<>();
Map<Integer, Person> hashTable = new Hashtable<>();
Person person1 = new Person(1, "Tom", 20);
Person person2 = new Person(2, "Jerry", 22);
Person person3 = new Person(3, "Alice", 25);
hashMap.put(person1.getId(), person1);
hashMap.put(person2.getId(), person2);
hashMap.put(person3.getId(), person3);
hashTable.put(person1.getId(), person1);
hashTable.put(person2.getId(), person2);
hashTable.put(person3.getId(), person3);
}
}
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 String getName() {
return name;
}
public int getAge() {
return age;
}
}
```
最后,我们来比较HashMap和Hashtable的速度。由于Hashtable是线程安全的,因此在多线程环境下,Hashtable的性能要比HashMap差。在单线程环境下,HashMap的性能要比Hashtable好。因此,在实际开发中,应该根据具体的场景选择使用哪种数据结构。
阅读全文