IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> HashMap的jdk1.8的新方法使用 -> 正文阅读

[数据结构与算法]HashMap的jdk1.8的新方法使用

package com.zyp.test;

import com.google.common.collect.Maps;

import java.util.HashMap;

/**
 *put():key不存在则直接插入,返回值为null,key存在则对应的value值被新值覆盖,返回值为旧值
 *compute():key不存在则直接插入,返回值为新值,key存在时,则通过remappingFunction计算新的value,返回计算后的value值,key值不变
 *computeIfAbsent():key不存在则value进行mappingFunction运算(i -> i + "a",i为key值),返回值新值,key存在,value不变,返回值旧值
 *computeIfPresent():key不存在则不插入,返回值为null,key存在时value进行remappingFunction,返回值为新值
 *merge():key不存在时,则把第二个参数当做value插入到map中,返回第二个参数,key存在时,
 *对原有value值和第二个参数值进行remappingFunction,返回计算后的value
 */
public class Map18 {

    public static void main(String[] args) {
        HashMap<Integer, String> map = Maps.newHashMap();
        //key不存在则直接插入,返回值为null,key存在则对应的value值被新值覆盖,返回值为旧值
        String put = map.put(1, "1");
        System.out.println("put->"+put);
        String put1 = map.put(1, "2");
        System.out.println("put1->"+put1);
        //key不存在则直接插入,返回值为新值,key存在时,则通过remappingFunction计算新的value,返回计算后的value值,key值不变
        String compute = map.compute(2, (K, V) -> "2");
        System.out.println("compute->"+compute);
        String compute1 = map.compute(2, (K, V) -> V+"b");
        System.out.println("compute1->"+compute1);
        //key不存在则value进行mappingFunction运算(i -> i + "a",i为key值),返回值新值,key存在,value不变,返回值旧值
        String computeIfAbsent = map.computeIfAbsent(2, i -> i + "a");
        System.out.println("computeIfAbsent->"+computeIfAbsent);
        String computeIfAbsent2 = map.computeIfAbsent(4, i -> i + "a");
        System.out.println("computeIfAbsent2->"+computeIfAbsent2);
        System.out.println(map);
        //key不存在则不插入,返回值为null,key存在时value进行remappingFunction,返回值为新值
        String computeIfPresent = map.computeIfPresent(4, (K, V) -> V + "a");
        System.out.println("computeIfPresent->"+computeIfPresent);
        String computeIfPresent2 = map.computeIfPresent(5, (K, V) -> V + "a");
        System.out.println("computeIfPresent2->"+computeIfPresent2);
        System.out.println(map);
        //key不存在时,则把第二个参数当做value插入到map中,返回第二个参数,
        //key存在时,对原有value值和第二个参数值进行remappingFunction,返回计算后的value
        String merge = map.merge(5, "5", (old, new1) -> old + new1);
        System.out.println("merge->"+merge);
        String merge2 = map.merge(5, "6", (old, new1) -> old + new1);
        System.out.println("merge2->"+merge2);
        String merge1 = map.merge(6, "6", (old, new1) -> old + new1);
        System.out.println("merge1->"+merge1);
        System.out.println(map);
    }
}

使用举例:

package com.zyp.test;

import com.google.common.collect.Maps;

import java.util.HashMap;

/**
 * @author syl
 * @description TODO
 * @since 2022/3/8
 */
public class MapTest {
    public static void main(String[] args) {
        //统计随机字符串中每个字符的个数
        String a="fiensdkajfhquebdjsankroiwqfhusdbvjnkwoqdas";
        //方法1
        HashMap<Character, Integer> map = Maps.newHashMap();
        for (int i = 0; i <a.length() ; i++) {
            char c = a.charAt(i);
            Integer value = map.get(c);
            if(null==value){
                value=1;
            }else{
                ++value;
            }
            map.put(c, value);
        }
        System.out.println("map->"+map);
        System.out.println();
        map.clear();
        //方法2
        for (int i = 0; i < a.length(); i++) {
            map.compute(a.charAt(i),(K,V)->{
                if(V==null){
                   V=1;
                }else{
                    ++V;
                }
                return V;
            });
        }
        System.out.println("map1->"+map);
        //方法3
        map.clear();
        for (int i = 0; i < a.length(); i++) {
            map.merge(a.charAt(i), 1, (s,s1)->s+s1);
        }
        System.out.println("map2->"+map);
    }
}
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-03-10 22:50:47  更:2022-03-10 22:53:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 13:54:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码