treemap跟hashmap
时间: 2023-11-30 12:40:53 浏览: 87
TreeMap和HashMap都是Java中的Map接口的实现类,它们都可以用于存储键值对。但是它们的底层实现方式不同,因此它们在某些方面有所不同。
下面是TreeMap和HashMap的比较:
1. TreeMap是有序的,而HashMap是无序的。这是因为TreeMap实现了SortedMap接口,而HashMap没有实现该接口。
2. TreeMap的底层是由树(红黑树)实现的,而HashMap是由哈希桶实现的。由于哈希算法本身的优势,我们再进行增删查改的时候,HashMap的时间复杂度是O(1),是通过哈希函数计算的哈希地址。而我们的红黑树就不具有这样的优势,时间复杂度是O(log2n)。
3. TreeMap和HashMap都可以存储null值,但是HashMap只能有一个null键,而TreeMap可以有多个null键。
4. TreeMap和HashMap都不是线程安全的,如果需要在多线程环境下使用,需要进行额外的同步处理。
下面是一个使用TreeMap的例子:
```java
import java.util.TreeMap;
public class TreeMapExample {
public static void main(String[] args) {
// 创建一个TreeMap对象
TreeMap<String, Integer> treeMap = new TreeMap<>();
// 添加键值对
treeMap.put("apple", 1);
treeMap.put("banana", 2);
treeMap.put("orange", 3);
// 获取键值对
System.out.println(treeMap.get("apple")); // 输出:1
// 遍历键值对
for (String key : treeMap.keySet()) {
System.out.println(key + ": " + treeMap.get(key));
}
}
}
```
下面是一个使用HashMap的例子:
```java
import java.util.HashMap;
public class HashMapExample {
public static void main(String[] args) {
// 创建一个HashMap对象
HashMap<String, Integer> hashMap = new HashMap<>();
// 添加键值对
hashMap.put("apple", 1);
hashMap.put("banana", 2);
hashMap.put("orange", 3);
// 获取键值对
System.out.println(hashMap.get("apple")); // 输出:1
// 遍历键值对
for (String key : hashMap.keySet()) {
System.out.println(key + ": " + hashMap.get(key));
}
}
}
```
阅读全文