【JAVA日常操作】JAVA里Map的一些常用方法(java 各种map)

  本篇文章为你整理了【JAVA日常操作】JAVA里Map的一些常用方法(java 各种map)的详细内容,包含有java中map的用法 java 各种map java.map java map使用例子 【JAVA日常操作】JAVA里Map的一些常用方法,希望能帮助你了解 【JAVA日常操作】JAVA里Map的一些常用方法。

  场景:一张建行用户体验金信息大表(百万级别),里面存在一个字段对多条数据,需要统计某个字段的多条数据累加值以供于别的服务调用。

  优化前解决:直接查出来一个大list给到另一个服务,再另外一个服务里有笛卡尔积算出累加值(笛卡尔积后得到jvm需运算56亿次),程序直接接近崩溃,故需优化。

  优化思路:首先由于该表是一张大表,所以我们不能直接把这百万级别轰到内存中(不然会OOM),我们先分组取出,分组迭代使用Map的Merge方法(源码如下),该方法接收了三个参数,一个是Key,一个是value,一个是remappingFunction,简单理解,如果给定的key不存在,它就变成了 put(key, value) ;但是,如果 key 已经存在一些值,我们 remappingFunction 可以选择合并的方式,然后将合并得到的 newValue 赋值给原先的 key。

  

// 源码如下

 

  default V merge(K key, V value,

   BiFunction ? super V, ? super V, ? extends V remappingFunction) {

   Objects.requireNonNull(remappingFunction);

   Objects.requireNonNull(value);

   V oldValue = get(key);

   V newValue = (oldValue == null) ? value :

   remappingFunction.apply(oldValue, value);

   if (newValue == null) {

   remove(key);

   } else {

   put(key, newValue);

   return newValue;

  

 

  场景:逻辑需要移除map里特定的key和value元素

  优化前解决:遍历找出对应条件,程序效率不高,很多无效判断

  优化思路:使用map jdk1.8新增方法一步解决,remove方法,该方法有两个入参,一个是key,一个是value。基本理解,仅当指定的 key 关联到指定的 value 时,才删除指定的项,删除成功返回 true。

  

// 源码如下

 

  default boolean remove(Object key, Object value) {

   Object curValue = get(key);

   if (!Objects.equals(curValue, value)

   (curValue == null !containsKey(key))) {

   return false;

   remove(key);

   return true;

  

 

  Map的另外一些新增方法示例

  

// 原有的Put方法,是当Key存在时则替换;而putIfAbsent方法,则是当存在Key忽略Put操作不替换

 

  map.putIfAbsent("K1001", "K1001-1");

  // 如果Key存在,则将函数的运算结果作为这个Key对应的Value的新值Put进去

  map.computeIfPresent("K1001", (k, v) - k + v);

  // 如果Map中不存这个Key对应个的键值对,则Put这个Key和将Key带入函数运算后的结果为Value的键值对;如果Key存在,则忽略Put操作

  map.computeIfAbsent("K1002", k -

  // 只有当Map中键值对同时等于参数Key和Value时才执行删除

  map.remove("K1002", "K1002");

  // 从Map中获取指定Key的Value的值,如果不存在则返回指定的默认值

  String vle = map.getOrDefault("K1002", "V1002");

  System.out.println(vle);

  // 遍历 forEach

  map.forEach((k, v) - System.out.println(k + " -- " + v));

  

 

  以上就是【JAVA日常操作】JAVA里Map的一些常用方法(java 各种map)的详细内容,想要了解更多 【JAVA日常操作】JAVA里Map的一些常用方法的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: