Java HashMap 和 TreeMap区别
1. HashMap
java.util.HashMap 类是基于哈希的实现。在 HashMap 中,我们有一个键和一个值对
。 HashMap<K, V> hmap = new HashMap<K, V>();
public class Test2 {
public static void main(String[] args) {
String[] names={
"Mary","John","Emma"};
int[] heights ={
180,165,170};
int length = names.length;
String[] result = new String[names.length];
Map<Integer, String> map = new HashMap<Integer, String>();
for (int i = 0; i < names.length; i++) {
map.put(heights[i], names[i]);
}
System.out.println(map);
}
}
{
180=Mary, 165=John, 170=Emma}
- HashMap 不维护任何顺序,既不基于键也不基于值,如果我们希望键按照排序的顺序维护,我们需要使用 TreeMap。
- 复杂性:get/put/containsKey() 操作在平均情况下是 O(1),但完全取决于计算哈希值需要多少时间。
2.TreeMap
只需要按排序顺序存储唯一元素时,TreeMap 会有点方便。 Java.util.TreeMap 在后台使用红黑树确保没有重复;此外,它还按排序顺序维护元素。
TreeMap<K, V> hmap = new TreeMap<K, V>();
public class Test2 {
public static void main(String[] args) {
String[] names={
"Mary","John","Emma"};
int[] heights ={
180,165,170};
int length = names.length;
String[] result = new String[names.length];
TreeMap<Integer, String> map = new TreeMap<Integer, String>();
for (int i = 0; i < names.length; i++) {
map.put(heights[i], names[i]);
}
System.out.println(map);
}
}
{
165=John, 170=Emma, 180=Mary}
对于 add、remove、containsKey 等操作,时间复杂度为 O(log n,其中 n 是 TreeMap 中存在的元素数。
TreeMap 始终使元素保持排序(递增)的顺序,而 HashMap 中的元素没有顺序。 TreeMap 还为键的 first、last、floor 和 ceiling 提供了一些方法。
3.HashMap 和 TreeMap区别
1.HashMap 实现了 Map 接口,而 TreeMap 实现了 SortedMap 接口。 Sorted Map 接口是 Map 的子接口。
2.HashMap 实现了哈希,而 TreeMap 实现了红黑树(一种自平衡二叉搜索树)。因此,散列和平衡二叉搜索树之间的所有差异都适用于此。
3.HashMap 和 TreeMap 都有对应的 HashSet 和 TreeSet。 HashSet 和 TreeSet 实现了 Set 接口。在 HashSet 和 TreeSet 中,我们只有键,没有值,这些主要用于查看集合中的存在/不存在。
还没有评论,来说两句吧...