java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap Hashtable
LinkedHashMap 和TreeMap
Map主要用于存储健值对,根据键得到值,因此不允许键重复,但允许值重复。
Hashmap 是一个 最常用的Map,它根据键的HashCode
值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的。HashMap最多只允许一条记录的键为Null;允许多条记录的值为
Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如果需要同步,可以用
Collections的synchronizedMap方法使HashMap具有同步的能力,或者使用ConcurrentHashMap。
Hashtable 与
HashMap类似,不同的是:它不允许记录的键或者值为空;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了
Hashtable在写入时会比较慢。
LinkedHashMap保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.在遍历的时候会比HashMap慢,不过有种情况例外,当HashMap容量很大,实际数据较少时,遍历起来可能会比LinkedHashMap慢,因为LinkedHashMap的遍历速度只和实际数据有关,和容量无关,而HashMap的遍历速度和他的容量有关。
TreeMap实现SortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序,也可以指定排序的比较器,当用Iterator
遍历TreeMap时,得到的记录是排过序的。
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
for(int i=0;i<100;i++){
map.put("a"+i,String.valueOf(i));
}
map.put("a3", "dd");
map.put("a2", "bb");
map.put("a1", "cc");
for (Iterator iterator = map.values().iterator(); iterator.hasNext();) {
String name = (String) iterator.next();
System.out.println(name);
}
Map<String, String> map1 = new LinkedHashMap<String, String>();
map1.put("a3", "dd");
map1.put("a2", "bb");
map1.put("a1", "cc");
for (Iterator iterator = map1.values().iterator(); iterator.hasNext();) {
String name = (String) iterator.next();
System.out.println(name);
}
Map<String, String> map2 = new TreeMap<String, String>(new Comparator<Object>(){
Collator collator = Collator.getInstance();
public int compare(Object o1, Object o2) {
CollationKey key1 = collator.getCollationKey(o1.toString());
CollationKey key2 = collator.getCollationKey(o2.toString());
return key2.compareTo(key1);
//return collator.compare(o1, o2);
}});
map2.put("a3", "dd");
map2.put("a2", "bb");
map2.put("a1", "cc");
for (Iterator iterator = map2.values().iterator(); iterator.hasNext();) {
String name = (String) iterator.next();
System.out.println(name);
}
}
运行这段代码可以看出这几个之间的区别。
分享到:
相关推荐
### Java中HashMap, LinkedHashMap, TreeMap,HashTable的区别 在Java编程语言中,`Map`接口是集合框架中的一个重要组成部分,用于存储键值对。本文将详细分析四种常用的`Map`实现类:`HashMap`, `LinkedHashMap`, ...
HashMap, HashTable, LinkedHashMap, TreeMap 的区别 在 Java 中,Map 是一个非常重要的集合类,用于存储键值对。其中,HashMap, HashTable, LinkedHashMap, TreeMap 是四种常用的 Map 实现类,每种类都有其特点和...
在Java编程语言中,`HashMap`、`TreeMap`和`LinkedHashMap`都是`java.util.Map`接口的实现,它们提供了不同的数据存储和访问策略。本文将深入探讨这三种数据结构的特点、工作原理以及适用场景。 1. **HashMap** `...
了解Map的整体结构也很重要,HashMap和其他Map实现如LinkedHashMap(保持插入顺序或访问顺序的HashMap)都是从AbstractMap继承,而Hashtable则直接继承Dictionary类,这反映了它们设计上的差异和适用场景的不同。...
Map接口用于保存具有key-value映射关系的数据,常见的Map实现包括HashMap、TreeMap、HashTable和LinkedHashMap等。Queue是Java提供的队列实现。 本文总结了HashMap和HashTable的源码学习和面试总结,涵盖了它们的...
HashMap是最常用的Map实现,它提供了快速的查找,但不保证元素的顺序,且允许null键和值。TreeMap则按Key的自然排序或自定义排序存储元素,适合需要排序的场景。HashTable是线程安全的,但效率相对较低,不推荐在单...
Map 的实现类有 Hashtable、HashMap、LinkedHashMap 和 TreeMap。Hashtable 是一种线程安全的哈希表,HashMap 是一种线程不安全的哈希表,LinkedHashMap 是一种链表哈希表,TreeMap 是一种树形哈希表。 在实际应用...
HashTable和HashMap的区别详解 LeetCode 27. 删除元素(Remove Element) 7月8号 7月5号 复习hashMap concurrentHashmap [LeetCode 70. 爬楼梯(Climbing Stairs).md](Java基础/数据结构与算法/LeetCode/LeetCode ...
Map接口是双列集合,存储键值对,例如Hashtable、HashMap、LinkedHashMap和TreeMap。Hashtable是线程安全的,HashMap非线程安全但性能较高,LinkedHashMap保持插入顺序,TreeMap则根据键进行排序。 在SQL中,事务...
4. Map接口存储键值对,其实现类包括HashMap、LinkedHashMap、TreeMap和Hashtable。HashMap是非同步的,允许null键和值,查找和插入速度快。LinkedHashMap保持了插入顺序或访问顺序,TreeMap按照键的自然排序或...
Map接口没有直接的实现类,但它有一些重要的实现,如HashMap、LinkedHashMap和TreeMap。HashMap是基于哈希表实现的,查找和插入速度较快,但不保证元素的顺序;LinkedHashMap则在HashMap基础上保持了插入顺序或访问...
本文将详细介绍HashMap的底层原理,包括其内部实现结构、关键字段的作用、以及JDK 1.7和JDK 1.8版本的主要区别。 首先,HashMap是基于哈希表的Map接口非同步实现,它允许使用null值和null键,这意味着HashMap在设计...
4. HashMap和TreeMap的区别: - TreeMap实现了SortedMap接口,基于红黑树,而HashMap基于哈希散列表实现。 - TreeMap插入、删除速度慢,因为需要维护树的平衡。 - TreeMap默认按键的升序排序,而HashMap是随机存储。...
在Java编程语言中,`HashMap`、`TreeMap`和`Hashtable`是三种常见的集合类,它们都实现了`Map`接口,用于存储键值对数据。理解这些类的区别和应用场景对于提升Java开发技能至关重要。 首先,`HashMap`是Java中最...
主要实现类有HashMap、LinkedHashMap、TreeMap和Hashtable。 - HashMap是基于哈希表的数据结构,JDK1.8以前是数组+链表,JDK1.8后引入了红黑树,当链表长度达到8时转换为红黑树,提高了查找效率。 - LinkedHashMap...
Map接口的实现包括HashMap、LinkedHashMap、TreeMap和Hashtable。HashMap是最常用的实现,它提供了快速的查找和插入,但不保证元素顺序。LinkedHashMap保持了插入顺序或访问顺序,而TreeMap按照键的自然排序或比较器...
6. HashMap、LinkedHashMap、TreeMap 的区别: - LinkedHashMap 保存了记录的插入顺序,遍历要比 HashMap 要慢。 - TreeMap 实现了 SortMap 接口,能够把保存的记录按照键排序。 7. Set 实现类比较: - HashSet...
主要实现类包括HashMap、Hashtable、LinkedHashMap和TreeMap。 1. HashMap:它利用键的hashCode值存储数据,根据键快速定位到值。由于使用了哈希表的存储方式,HashMap通常能够提供较快的读写性能。它的遍历顺序是...
- Map接口代表键值对容器,常见实现类有HashMap、Hashtable、LinkedHashMap和TreeMap。 - 自定义数据结构通常涉及实现以上接口或抽象类,以满足特定需求。 理解并熟练掌握这些基础概念,对于成为一名合格的Java...