Java中的TreeMap,HashMap和LinkedHashMap有什么区别?
HashSet和ArrayList都是JavaCollection框架最重要的类之一。
以下是TreeMap,HashMap和LinkedHashMap之间的重要区别。
插入到TreeMap中的元素根据其键的自然顺序排序,或者根据使用的构造函数在创建映射时提供的比较器进行排序。
LinkedHashMap遵循元素的插入顺序,并维护插入其中的元素的顺序。
在HashMap的情况下,允许存储一个null键以及多个null值。
TreeMap的get、put和remove操作的复杂性为o(log(n)),这比HashMap的复杂性要高
LinkedHashMap同样具有与HashMap相同的复杂性,即O(1)。
另一方面,HashMap实现了简单的Map接口,并在内部使用散列来存储和检索其元素。
TreeMap维护其元素的顺序,因此性能指标较低,并且比HashMap和LinkedHashMap需要更多内存。
LinkedHashMap比TreeMap快,但比HashMap慢。
另一方面,HashMap使用Object类的Compare()方法进行元素比较。
TreeMap与HashMap与LinkedHashMap的示例
JavaTester.java
// Java程序进行打印排序
//使用HashMap的所有元素
import java.util.*;
import java.lang.*;
import java.io.*;
public class JavaTester{
static void getAndShow(AbstractMap map){
int[] input= {1, -1, 0, 2,-2};
for (int x: input){
map.put(x, Integer.toString(x));
}
Set<Integer> keySet = map.keySet();
for (int k: keySet){
System.out.print(k + ", ");
}
}
public static void main (String[] args){
HashMap map = new HashMap();
getAndShow(map);
LinkedHashMap map1 = new LinkedHashMap();
getAndShow(map1);
TreeMap map2 = new TreeMap();
getAndShow(map2);
}
}输出结果
-1, 0, 1, -2, 2, 1, -1, 0, 2, -2, -2, -1, 0, 1, 2,