Java中HashMap的学习
2018-03-22 16:54
134 查看
HashMap源码及详细介绍:Java 集合系列10之 HashMap详细介绍(源码解析)和使用示例
HashMap是一个散列表,存储的内容是键值对(key-value)映射,其实现不是同步的,这意味着它不是线程安全的,其映射也不是有序的。
对于HashMap(不管哪种容器),在设置初始容量时应该考虑到映射中所需的条目数及其加载因子,以便最大限度地减少 rehash 操作次数。如果初始容量大于最大条目数除以加载因子,则不会发生 rehash 操作。HashMap是通过"拉链法"实现的哈希表,其成员变量table是一个Entry[]数组类型,而Entry实际上就是一个单向链表。哈希表的"key-value键值对"都是存储在Entry数组中的。
// 代码实现
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class HashMapTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
HashMap<Integer, String> map = new HashMap<>();
map.put(1, "a");
map.put(3, "b");
map.put(2, "c");
System.out.println(map);
Iterator it = map.entrySet().iterator();
// Iterator it1 = map.keySet().iterator();
// Iterator it2 = map.values().iterator();
// 效率较好,只遍历键或值都可用此方式
while(it.hasNext()) {
Map.Entry tmp = (Map.Entry)it.next();
System.out.print(tmp.getKey() + ":" + tmp.getValue() + " ");
}
System.out.println();
System.out.println(map.get(1));
System.out.println(map.containsKey(1) + " " + map.containsValue("a"));
map.remove(1);
map.clear();
System.out.println(map.isEmpty());
}
}
继续加油~
HashMap是一个散列表,存储的内容是键值对(key-value)映射,其实现不是同步的,这意味着它不是线程安全的,其映射也不是有序的。
对于HashMap(不管哪种容器),在设置初始容量时应该考虑到映射中所需的条目数及其加载因子,以便最大限度地减少 rehash 操作次数。如果初始容量大于最大条目数除以加载因子,则不会发生 rehash 操作。HashMap是通过"拉链法"实现的哈希表,其成员变量table是一个Entry[]数组类型,而Entry实际上就是一个单向链表。哈希表的"key-value键值对"都是存储在Entry数组中的。
// 代码实现
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class HashMapTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
HashMap<Integer, String> map = new HashMap<>();
map.put(1, "a");
map.put(3, "b");
map.put(2, "c");
System.out.println(map);
Iterator it = map.entrySet().iterator();
// Iterator it1 = map.keySet().iterator();
// Iterator it2 = map.values().iterator();
// 效率较好,只遍历键或值都可用此方式
while(it.hasNext()) {
Map.Entry tmp = (Map.Entry)it.next();
System.out.print(tmp.getKey() + ":" + tmp.getValue() + " ");
}
System.out.println();
System.out.println(map.get(1));
System.out.println(map.containsKey(1) + " " + map.containsValue("a"));
map.remove(1);
map.clear();
System.out.println(map.isEmpty());
}
}
继续加油~
相关文章推荐
- 深入Java集合学习系列:HashMap的实现原理
- [Java]JDK源码学习(3)HashMap
- 深入Java集合学习系列:HashMap的实现原理
- 深入Java集合学习系列:HashMap的实现原理
- 深入Java集合学习系列:HashMap的实现原理
- 深入Java集合学习系列:HashMap的实现原理
- Java Concurrent包学习之ConcurrentHashMap
- java学习笔记4 - HashMap,LinkedHashMap,TreeMap对比
- java学习之hashMap
- 深入Java集合学习系列:HashMap的实现原理
- 深入Java集合学习系列:HashMap的实现原理
- Java学习之HashMap和Hashtable的区别
- 深入Java集合学习系列:HashMap的实现原理
- 深入Java集合学习系列:HashMap的实现原理
- 深入Java集合学习系列:HashMap的实现原理
- 深入Java集合学习系列:HashMap的实现原理
- 【Java 学习笔记】 Hashmap
- Java学习笔记-HashMap
- java集合框架学习—HashMap的实现原理
- Java 容器类学习笔记1--了解Java提供的容器类List、ArrayList、Vector及map、HashTable、HashMap