Java中HashMap的学习

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

}


继续加油~

猜你喜欢

转载自blog.csdn.net/yo_bc/article/details/79642979