HashMap基础基于哈希表的Map接口的实现。此实现提供所有可选的映射操作并允许使用null值和null键。除了不同步和允许使用null之外import java.util.*;/*** @author XuqiangDuan* @Date 2018/9/14 16:45**/pub
HashMap基础基于哈希表的Map接口的实现。此实现提供所有可选的映射操作并允许使用null值和null键。除了不同步和允许使用null之外import java.util.*;/*** @author XuqiangDuan* @Date 2018/9/14 16:45**/public class MapDemo {/*** @deprecated 该标记为已弃用* HashMap 常用方法*/public static void mapMethod() {HashMap hashMap = new HashMap();hashMap.put("a", 1);hashMap.put("b", 2);hashMap.put("c", 3);hashMap.put("d", 4);hashMap.put("e", 5);//sizeSystem.out.println("size: " + hashMap.size());//valuesSystem.out.println("values: " + hashMap.values());//keysSystem.out.println("keys: " + hashMap.keySet());//entrySystem.out.println("entrySet : " + hashMap.entrySet());Set set = hashMap.entrySet();Iterator iterator = set.iterator();while (iterator.hasNext()) {Map.Entry entry = (Map.Entry) iterator.next();System.out.println("key:" + entry.getKey() + " - value:" + entry.getValue());}/** putAll* 合并时,key相同value更新*/HashMap hashMapN = new HashMap();hashMapN.put("e", 55);hashMapN.put("f", 66);hashMapN.put("g", 77);hashMapN.put("h", 88);hashMapN.put("i", 99);hashMapN.putAll(hashMap);System.out.println("N合并后 size: " + hashMapN.size());System.out.println("N合并后 values: " + hashMapN.values());//JDK8-lambda表达式hashMapN.forEach((k, v) -> {System.out.println(k + " : " + v);});//removehashMap.remove("a");System.out.println("remove后的size : " + hashMap.size());//clearhashMap.clear();System.out.println("clear后的size : " + hashMap.size());}/*** 主方法** @param args*/public static void main(String[] args) {//HashMap方法MapDemo.mapMethod();}}
二、Java 8 HashMap优化特性
参考链接:Java 8系列之重新认识HashMap
小结
- 扩容是一个特别耗性能的操作,所以当程序员在使用HashMap的时候,估算map的大小,初始化的时候给一个大致的数值,避免map进行频繁的扩容;
- 负载因子是可以修改的,也可以大于1,但是建议不要轻易修改,除非情况非常特殊;
- HashMap是线程不安全的,不要在并发的环境中同时操作HashMap,建议使用ConcurrentHashMap;
- JDK1.8引入红黑树大程度优化了HashMap的性能。
【感谢本站
数字底座由龙石数据提供 http://www.longshidata.com/pages/government.html】