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 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Map.getOrDefault()以及Optional.ofNullable() -> 正文阅读

[Java知识库]Map.getOrDefault()以及Optional.ofNullable()

如题所示,在开发过程中看到JDK1.8的两个方法,个人觉得较为实用,以作记录

首先是Map.getOrDefault()方法

源码
	default V getOrDefault(Object key, V defaultValue) {
	   V v;
	    return (((v = get(key)) != null) || containsKey(key))
	        ? v
	        : defaultValue;
	}

Map集合中有这个key,就使用这个key对应的value值,如果没有该key就使用默认值defaultValue

举例代码
	Map<String, String> map = new HashMap<>();
	map.put("province", "四川");
	map.put("city","成都");
	map.put("area","高新区");
	String s1 = map.getOrDefault("province", "陕西");
	// s1 的值为 '四川',而非 '陕西'
	System.out.println(s1);
	String s2 = map.getOrDefault("text", "默认值");
	// s2 的值为 '默认值',因为在map中未找到key为text的value,所以返回默认值
	System.out.println(s2);

其次是Optional.ofNullable()方法

源码
	private static final Optional<?> EMPTY = new Optional<>();
	
	public static <T> Optional<T> ofNullable(T value) {
        return value == null ? empty() : of(value);
    }
    
    public static<T> Optional<T> empty() {
        @SuppressWarnings("unchecked")
        Optional<T> t = (Optional<T>) EMPTY;
        return t;
    }
	
	public static <T> Optional<T> of(T value) {
        return new Optional<>(value);
    }
  1. 首先执行ofNullable(),如果T对象为空执行empty()方法;不为空执行of(value)方法;
  2. empty()初始化一个空对象Optional(此处注意空对象和null是不同的);
  3. of(value)方法,将泛型对象T用于Optional构造方法的参数上,返回一个有值的对象;
  4. 经过上面两步保证了Optional不为null,避免了空指针。
	List list = null;
	// 在实际中肯定要对list判空再进行循环或者逻辑处理,但用该方法一步即可解决,其实底层逻辑也是进行判断了的,只是封装起来我们业务代码看着就更加优雅与美观
    Optional.ofNullable(list).orElse(new ArrayList()).forEach(e -> System.out.println(e.toString()));
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-04-09 18:09:53  更:2022-04-09 18:12:27 
 
开发: 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/24 6:08:12-

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