1:map的使用

computeIfPresent  ,如果键已经存在,将键和值作为参数传到函数式中,计算返回新的值
import java.util.HashMap;
import java.util.Map; /**
* @program: GradleTestUseSubModule
* @author: Yafei Li
* @create: 2018-06-27 09:18
**/
public class Test2 {
public static void main(String[] args){
Map<Integer,String> map = new HashMap<>(); map.putIfAbsent(3, "hi"); map.computeIfPresent(3, (num, val) -> { //如果存在键3,将键num(3)和键对应的值val作为参数传入。 num是键, val是键对应的值
System.out.println(num); //
System.out.println(val); //hi
return val + num; //返回的对象作为新值
});
String s = map.get(3);
System.out.println(s); //hi3 }
}

2:computeIfAbsent  如果不存在改键,将键作为参数传入到函数式,返回一个该键对应的值。

        map.computeIfAbsent(2, (key)->{
System.out.println(key); //
return key+"hello";
});

3:computeIfPresent 计算过后,返回值为该键对应的值,可以在后面直接对该值操作

            String set1 = map.computeIfPresent(key, (val, set) -> {

                return set+"hello";
});

4:merge

import java.util.HashMap;
import java.util.Map; /**
* @program: GradleTestUseSubModule
* @author: Yafei Li
* @create: 2018-06-27 09:34
**/
public class Test3 {
public static void main(String[] args){
Map<Integer,String> map = new HashMap<>();
map.merge(9, "val9", (value, newValue) -> {
System.out.println(value); //不输出,因为键值不存在,不进行计算
System.out.println(newValue);
value.concat(newValue);
return value;
});
String s = map.get(9);// val9
System.out.println(s);
map.merge(9, "val9", (value, newValue) -> {
System.out.println("value: "+value);
System.out.println("newValue: "+newValue);
value.concat(newValue);
return value;
});
map.get(9);
System.out.println(s); /**结果
val9
value: val9
newValue: val9
val9
*/ }
}

Merge做的事情是如果键名不存在则插入,否则则对原键对应的值做合并操作并重新插入到map中。

java8工具类使用的更多相关文章

  1. JAVA8的LocalDateTime使用心得和工具类

    今天做不成的事,明天也不会做好. 同学们,JAVA8出了这么久,不知道你们有没有用过它的LocalDateTime类型,还是依然用Date类型呢?其实,LocalDateTime类型给我们提供了很多便 ...

  2. 基于Java8的日期时间工具类DateTimeFormatter

    原文:https://blog.csdn.net/qq_36596145/article/details/85331002 import java.time.Instant; import java. ...

  3. Java8中的LocalDateTime工具类

    网上搜索了半天都没有找到Java8的LocalDateTime的工具类,只好自己写了一个,常用功能基本都有.还在用Date的Java同道该换换了. 个人项目地址:https://github.com/ ...

  4. Java8集合框架——集合工具类Arrays内部方法浅析

    java.util.Arrays 备注:本文只对 Java8 中的 java.util.Arrays 中提供的基本功能进行大致介绍,并没有对其具体的实现原理进行深入的探讨和分析.详情可自己深入观摩源码 ...

  5. Java8 ,LocalDate,LocalDateTime处理日期和时间工具类,

    Java8 ,LocalDate,LocalDateTime处理日期和时间工具类 1.获取今天的日期 2.在Java 8 中获取年.月.日信息 3.在Java 8 中处理特定日期 4.在Java 8 ...

  6. java8时间类API安全问题(赠送新的时间工具类哟)

    LocalDateTime等新出的日期类全是final修饰的类,不能被继承,且对应的日期变量都是final修饰的,也就是不可变类.赋值一次后就不可变,不存在多线程数据问题. simpleDateFor ...

  7. java8时间工具类Localdate、LocaldateTime

    优点: 1.方便. Date 只能是日期加时间的格式,而 LocalDate .LocalTime.LocalDateTime 分别代表日期,时间,日期+时间,非常灵活.再就是后者在日期计算及格式化方 ...

  8. 开始使用 java8 的日期工具类

    例如,现有的类(例如java.util.Date和SimpleDateFormatter)不是线程安全的,这会导致用户潜在的并发问题.而新的LocalDate.LocalDateTime.DateTi ...

  9. Java程序员的日常—— Arrays工具类的使用

    这个类在日常的开发中,还是非常常用的.今天就总结一下Arrays工具类的常用方法.最常用的就是asList,sort,toStream,equals,copyOf了.另外可以深入学习下Arrays的排 ...

随机推荐

  1. datatables隐藏列排序

    var tableOption = { id: 'cacScriptTable', order: [[2, 'desc'],[1, 'desc']],//以第三列‘updatedAt’排序,如果第三列 ...

  2. CSS 解决IE6双倍距离BUG

    只要满足下面3个条件才会出现这个BUG: 1)要为块状元素:        2)要左侧浮动:        3)要有左外边距(margin-left): 解决这个BUG很容易,只需要在相应的块状元素的 ...

  3. Python 进阶(二)模块

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAW4AAABpCAIAAACVsl7UAAAgAElEQVR4nO2993vUxho2/P4r33XwSr

  4. Python 入门(二)Unicode字符串

    Unicode字符串 字符串还有一个编码问题. 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特(bit)作为一个字节 (byte),所以,一 ...

  5. Python 循环退出

    常用语句: break :退出整个循环,循环外的语句继续执行continue :退出本次循环,继续下一次循环pass :什么也不做,相当于在这里占个位置,以便以后修改代码sys.exit() :直接退 ...

  6. ScrollView拉到尽头时出现阴影的解决方法

    <code class="hljs markdown has-numbering" style="display: block; padding: 0px; col ...

  7. INSTALL_FAILED_INVALID_APK

    在项目中无意中把APP只写成了 xxx  没有xxx.xxx.xxx  掉坑里了,找了好久,给大家提不醒

  8. onTouch

    OnTouchOmOnTouchListenerOnTouchEvent View的事件分发 :    对于事件分发机制,举个简单的例子,在一个Activity中只有一个按钮,如果我们想给这个按钮注册 ...

  9. iOS @synthesize var = _var 变量前置下划线解释

    本文转载至 http://blog.csdn.net/ztp800201/article/details/9231617  前置下划线是一种为了帮助区分实例变量和访问方法的约定.对于编译器来说它只是一 ...

  10. JS面向对象编程学习

    学习目标:1.掌握JS中的类(原型对象)和对象.2.什么是成员变量和成员方法.3.掌握构造方法的使用.补充:关于双等号(==):1.如果等号两边都是字符串时,则比较内容是否相等2.如果等号两边是数字时 ...