Java8新特性之Stream-Map

Map一些新方法的具体使用案例

1、getOrDefault:default V getOrDefault(Object key, V defaultValue)

package com.qbb.threadpool;import java.util.HashMap;
import java.util.Map;/*** @author QiuQiu&LL (个人博客:https://www.cnblogs.com/qbbit)* @version 1.0* @date 2022-07-23  11:49* @Description:*/
public class Java8NewFeature {public static void main(String[] args) {Map<String,String> map = new HashMap<>();map.put("name", "qiuqiu");map.put("age", "22");map.put("hobby", "haha");map.put("interest", "no");/*** getOrDefault*/String orDefaultValue = getOrDefaultTest(map);System.out.println("orDefaultValue = " + orDefaultValue);}/*** getOrDefault* 如果Map中不存在该key,可以提供一个默认值,方法会返回改默认值。* 如果存在该key,返回键对应的值*/public static String getOrDefaultTest(Map<String,String> map){String orDefault = map.getOrDefault("qiu", "baoabo");return orDefault;}
}

image

2、forEach:default void forEach(BiConsumer<? super K, ? super V> action)

/*** forEach* 遍历map*/public static String forEachTest(Map<String, String> map) {/*** 以前的写法*/for (Map.Entry<String, String> entry : map.entrySet()) {String key = entry.getKey();String value = entry.getValue();System.out.println(key + "===" + value);}/*** 现在的写法*/map.forEach((k, v) -> System.out.println(k + "===" + v));/*** 还可以做一些中间操作*/map.forEach((k, v) -> {System.out.println(k + "===" + v);v = v + "you";map.put(k, v);});map.forEach((k, v) -> System.out.println(k + "===" + v));return null;}

image

3、putIfAbsent:default V putIfAbsent(K key, V value)

/*** putIfAbsent* V putIfAbsent(K key, V value)只有在不存在key值的映射或者映射值为null,才将value值赋值给key。* 否则不做修改。该方法将条件判断和赋值合二为一。*/public static String putIfAbsentTest(Map<String, String> map) {String result1 = map.put("name", "ll");System.out.println("result1 = " + result1);String result2 = map.putIfAbsent("name", "qiuqiu");System.out.println("result2 = " + result2);String name = map.get("name");System.out.println("name = " + name);String absent = map.putIfAbsent("hello", "qiuqiu");System.out.println("absent = " + absent);String hello = map.get("hello");System.out.println("hello = " + hello);return null;}

image

4、compute:default V compute(K key,BiFunction<? super K, ? super V, ? extends V> remappingFunction)

default V compute(K key,BiFunction<? super K, ? super V, ? extends V> remappingFunction) {Objects.requireNonNull(remappingFunction);// 获取key对应的值V oldValue = get(key);//获取新值V newValue = remappingFunction.apply(key, oldValue);// 如果新值为null,并且key存在,则删除key;否则把新值赋值给keyif (newValue == null) {// delete mappingif (oldValue != null || containsKey(key)) {// something to removeremove(key);return null;} else {// nothing to do. Leave things as they were.return null;}} else {// add or replace old mappingput(key, newValue);return newValue;}
}

5、computeIfAbsent:default V computeIfAbsent(K key,Function<? super K, ? extends V> mappingFunction)

public static void main(String[] args) {Map<String, String> map = new HashMap<>();map.put("name", "qiuqiu");map.put("age", "22");map.put("hobby", "haha");map.put("interest", "no");/* 当Map中不存在key值的映射或映射值为null时,调用mappingFunction,并在mappingFunction执行结果非null时,将结果赋值给key。*/String ifAbsent = map.computeIfAbsent("qiuqiu", k -> {return "hello:" + k;});System.out.println("ifAbsent = " + ifAbsent);}

image

6、merge:default V merge(K key, V value,BiFunction<? super V, ? super V, ? extends V> remappingFunction)

public static void main(String[] args) {Map<String, String> map = new HashMap<>();map.put("name", "qiuqiu");map.put("age", "22");map.put("hobby", "haha");map.put("interest", "no");/*** value和remappingFunction不能为null* 如果Map中key对应的映射不存在或者为null,* 则将value关联到key上;否则执行remappingFunction,* 如果执行结果为null则删除key的映射,否则用该结果跟key关联。*/// 给存在的key进行映射处理String merge = map.merge("name", "ll", (k, v) -> {System.out.println(k + "===" + v);return k + v;});System.out.println("merge = " + merge);// 给不存在的key,不会执行String result = map.merge("haha", "ll", (k, v) -> {System.out.println(k + "===" + v);return k + v;});System.out.println("map.get(haha) = " + map.get("haha"));System.out.println("result = " + result);}

7、remove(key,value):default boolean remove(Object key, Object value)

/*** remove* 只有在当前Map中key映射的值等于value时才删除该映射,否则什么也不做。*/public static String removeTest(Map<String, String> map) {boolean flag = map.remove("name", "qiuqiu");System.out.println("flag = " + flag);boolean flag2 = map.remove("hobby", "ll");System.out.println("flag2 = " + flag2);return null;}

image

8、replace:default boolean replace(K key, V oldValue, V newValue)

 /*** replace*/public static String replaceTest(Map<String, String> map){String one = map.replace("name", "haha");System.out.println("one = " + one);String two = map.replace("haha", "hehe");System.out.println("two = " + two);boolean flag = map.replace("name", "haha", "hehe");System.out.println("flag = " + flag);return null;}

image

9、replaceAll:default void replaceAll(BiFunction<? super K, ? super V, ? extends V> function)

public static void main(String[] args) {Map<String, String> map = new HashMap<>();map.put("name", "qiuqiu");map.put("age", "22");map.put("hobby", "haha");map.put("interest", "no");map.replaceAll((k, v) -> {// 对 k v 进行处理if ("hobby".equals(k)) {return v.toUpperCase();}return v;});// 打印map.forEach((k, v) -> System.out.println(k + "=" + v));}

image

当然还有其他的方法就不一一列举了,大家可以去试一下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3280362.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

从功能出发:优化超市商品陈列,助力销售额提升

随着时代的发展&#xff0c;竞争的加剧&#xff0c;人们的生活节奏加快&#xff0c;时间观念越来越强。在这种情形下&#xff0c;作为超市&#xff0c;怎样为顾客提供一个舒适方便的购物环境&#xff0c;尽可能让顾客逛完整个卖场&#xff0c;满足一站式购足呢&#xff1f;除了…

外卖项目day10---缓存商品/Spring Cache初学、购物车功能

缓存菜品&#xff0c;只需要在DishController中修改一下代码即可 /*** 菜品管理*/ RestController RequestMapping("/admin/dish") Api(tags "菜品相关接口") Slf4j public class DishController {Autowiredprivate DishService dishService;Autowiredpri…

【前端面试】七、算法-递归

遍历方法总结 链式调用 数组的很多操作可以构成链式操作&#xff0c;类似这样的格式&#xff1a;…map().filter(…).sort(…).map(….)链式操作就是对象方法返回类型是自身的。比如map是属于数组的方法&#xff0c;它返回数组&#xff0c;所以构成了链式操作优势&#xff1a;…

The Llama 3 Herd of Models 第4部分后训练的全文

Llama 3前三部分包括介绍、总体概述和预训练https://blog.csdn.net/qq_51570094/article/details/140682445?spm=1001.2014.3001.5501 4 Post-Training 后训练 我们通过应用几轮后训练6或将模型与人类反馈对齐来生成对齐的Llama 3模型(Ouyang等人,2022;Rafailov等人,2024)在…

Null Pointer Exception: 如何快速定位和修复?️

Null Pointer Exception: 如何快速定位和修复&#xff1f;&#x1f4a1;&#x1f6e0;️ Null Pointer Exception: 如何快速定位和修复&#xff1f;&#x1f4a1;&#x1f6e0;️摘要引言正文内容什么是Null Pointer Exception&#xff1f;&#x1f914;NPE的常见原因&#x1f…

使子查询可行

使用 子查询 时&#xff0c;行为或要求可能不会保存为普通查询。 此查询有效&#xff1a; 但是&#xff0c;作为子查询&#xff0c;它不再起作用&#xff1a; 原因是子查询需要别名&#xff1a;当我们添加它时&#xff0c;原来的错误消失了&#xff0c;但又出现了新的错误&…

springboot集成thymeleaf实战

引言 笔者最近接到一个打印标签的需求&#xff0c;由于之前没有做过类似的功能&#xff0c;所以这也是一次学习探索的机会了&#xff0c;打印的效果图如下&#xff1a; 这个最终的打印是放在58mm*58mm的小标签纸上&#xff0c;条形码就是下面的35165165qweqweqe序列号生成的&…

FPGA知识基础之--按键控制LED灯项目

文章目录 前言一、按键简介按键:通过按下或者释放来控制电路通断的电子元件按键原理图 二、实验要求三、程序设计3.1思路整理3.2 模型搭建3.3 顶层模块3.4 波形分析 四、代码整理4.1RTL代码4.2 仿真只需在Testbench上增加上述一段代码即可将参数实例化,可达到在Testbench上更改…

卷积神经网络的入门基本介绍 | 带你快速上手各种概念【附图解】

文章目录 1、简介2、核心概念3、关键操作4、常见架构5、训练过程6、重要概念图解⭐6.1、卷积神经网络工作⭐6.2、卷积核6.3、全连接与卷积网络的对比6.4、池化层6.5、感受野和卷积堆叠6.6、神经元计算和激活函数 7、卷积网络可以改进的地方8、结论 &#x1f343;作者介绍&#…

vue3集成LuckySheet实现导入本地Excel进行在线编辑

第一步&#xff1a;克隆或者下载下面的代码 git clone https://github.com/dream-num/Luckysheet.git第二步&#xff1a;安装依赖 npm install npm install gulp -g 第三步&#xff1a;运行 npm run dev效果如下图所示 第四步&#xff1a;打包 打包执行成功后&#xff0c;…

TypeError: Components is not a function

Vue中按需引入Element-plus时&#xff0c;报错TypeError: Components is not a function。 1、参考Element-plus官方文档 安装unplugin-vue-components 和 unplugin-auto-import这两款插件 2、然后需要在vue.config.js中配置webPack打包plugin配置 3、重新启动项目会报错 T…

程序员开发指南

在这个快节奏的时代&#xff0c;作为一名程序员&#xff0c;大家都希望能更快地开发出高质量的应用&#xff0c;而不是花费大量时间在基础设施和后台服务的搭建上。今天&#xff0c;我要向大家介绍一款专为懒人开发者准备的一站式开发应用的神器——MemFire Cloud。 一站式开发…

制品库nexus

详见&#xff1a;Sonatype Nexus Repository搭建与使用&#xff08;详细教程3.70.1&#xff09;-CSDN博客 注意事项&#xff1a; 1.java8环境使用nexus-3.69.0-02-java8-unix.tar.gz包 2.java11环境使用nexus-3.70.1-02-java11-unix.tar.gz包 3.注意使用制品库/etc/yum.repos.…

动物大联盟游戏攻略:必备游戏攻略!VMOS云手机升级攻略教程!

在《动物大联盟》中&#xff0c;合理的称号选择、活动参与和组队合作可以极大提升游戏体验和效率。以下是详细的攻略建议&#xff1a; 称号选择 称号不仅能展示玩家的实力和成就&#xff0c;还能提供额外的属性加成。合理选择和更换称号是提升战力的重要途径。 前期称号选择&…

Matlab编程资源库(19)级数与符号方程求解

一、级数符号求和 求无穷级数的和需要 符号表达式求和函数 symsum &#xff0c;其调用 格式为&#xff1a; symsum(s,v,n,m) 其中 s 表示一个级数的通项&#xff0c;是一个符号表达式。 v 是求和变 量&#xff0c; v 省略时使用系统的默认变量。 n 和 m 是求和的开始项 和…

【康复学习--LeetCode每日一题】3111. 覆盖所有点的最少矩形数目

题目&#xff1a; 给你一个二维整数数组 point &#xff0c;其中 points[i] [xi, yi] 表示二维平面内的一个点。同时给你一个整数 w 。你需要用矩形 覆盖所有 点。 每个矩形的左下角在某个点 (x1, 0) 处&#xff0c;且右上角在某个点 (x2, y2) 处&#xff0c;其中 x1 < x…

职业教育计算机网络综合实验实训室建设应用案例

近年来&#xff0c;职业教育在培养技能型人才方面发挥着越来越重要的作用。然而&#xff0c;传统的计算机网络技术教学模式往往重理论、轻实践&#xff0c;导致学生缺乏实际操作能力和职业竞争力。为了改变这一现状&#xff0c;唯众结合职业教育特点&#xff0c;提出了“教、学…

04.FreeRTOS任务创建

04. FreeRTOS任务创建与任务删除 1. FreeRTOS创建和删除任务相关API函数 函数描述xTaskCreate()动态方式创建任务xTaskCreateStatic()静态方式创建任务xTaskCreateRestricted()动态方式创建使用 MPU 限制的任务xTaskCreateRestrictedStatic()静态方式创建使用 MPU 限制的任务…

C# Unity 面向对象补全计划 之 继承(字段与属性)

本文仅作学习笔记与交流&#xff0c;不作任何商业用途&#xff0c;作者能力有限&#xff0c;如有不足还请斧正 本系列旨在通过补全学习之后&#xff0c;给出任意类图都能实现并做到逻辑上严丝合缝 Q&#xff1a;为什么要单讲继承字段与属性&#xff0c;不讲继承方法了吗&#x…