HashMap在工作中用的非常频繁。其实在JDK1.8中就增加了一些更高级的用法。熟练运用这些方法,可以大大提高开发效率,写出更加简洁美观的代码。1、get方法指定返回默认值(getOrDefault)Mapmap=newHashMap<>();map.put("key1","value1");Stringvalue1=map.getOrDefault("key1","defaultValue");System.out.println(value1);//输出value1//当key不存在时,返回指定的默认值Stringvalue2=map.getOrDefault("key2","defaultValue");System.out.println(value2);//输出默认值2。当key不存在时(putIfAbsent)执行put方法Mapmap=newHashMap<>();map.put("key1","value1");map.putIfAbsent("key1","newValue");Stringvalue=map.get("key1");System.out.println(value);//输出值13。只有key存在时才执行put方法(replace)Mapmap=newHashMap<>();map.put("key1","value1");map.replace("key1","newValue");map.replace("key2","value2");System.out.println(JSON.toJSONString(地图));//Output{"key1":"newValue"}4.当值不存在时重新计算(computeIfAbsent)有这样一个常见的应用场景,当一批用户按年龄分组后,新用户如何入组?通常我们这样做:publicclassMapTest{staticclassUser{//ageprivateIntegerage;//名称私有字符串名称;}publicstaticvoidmain(String[]args){//键是年龄,值是用户集合Map>map=newHashMap<>();//创建一个新用户Useruser=newUser(18,"yideng");Listusers=map.get(user.getAge());//如果没有这个年龄段的用户,则需要创建一个集合if(users==null){users=newArrayList<>();}users.add(用户);map.put(user.getAge(),users);}}还是老套的方案,一点都不优雅?JDK1.8之后就可以了//来个新用户Useruser=newUser(18,"Yideng");//如果没有这个年龄段的用户,直接创建集合Listusers=map.computeIfAbsent(user.getAge(),k->newArrayList<>());users.add(user);5.当值存在时重新计算(computeIfPresent)publicclassMapTest{staticclassUser{//ageprivateIntegerage;//nameprivateStringname;}publicstaticvoidmain(String[]args){//key为age,value为userMapmap=newHashMap<>();map.put(18,newUser(18,"Yideng"));//key存在value时重新计算并赋值map.computeIfPresent(18,(k,v)->{v.setName("OneLight");returnv;});System.out.println(map);//输出{18:{"age":18,"name":"Yileng"}}}}这个方法还有很多其他的应用场景,你认真思考过吗?6.还有一个常见的应用场景是合并新旧值(merge),当一组用户按年龄分组,如何将一组新用户添加到组中?我们可以这样做:publicclassMapTest{staticclassUser{//ageprivateIntegerage;//姓名私有字符串名称;}publicstaticvoidmain(String[]args){//键是年龄,值是用户集合Map>map=newHashMap<>();Listusers1=newArrayList<>();users1.add(newUser(18,"yideng"));map.put(18,users1);Listusers2=newArrayList<>();users2.add(newUser(18,"一盏灯"));//如果key存在,合并两个集合map.merge(18,users2,(oldV,v)->{oldV.addAll(v);returnoldV;});System.out.println(JSON.toJSONString(地图));//输出{18:[{"age":18,"name":"yideng"},{"age":18,"name":"onelamp"}]}}}