您的位置:首页 > 编程语言 > Java开发

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());
}

}

继续加油~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: