Java源码中你不知道但经常写的超便捷工具类

Java源码中你不知道但经常写的超便捷工具类,第1张

Java源码中你不知道但经常写的超便捷工具类

日常中我们会写很多工具类,但其实源码中已经有了,但可能你没有发现,那么总结一下源码中已经封装好可以直接使用的方法或者工具类。

1. HashMap - computeIfAbsent()

这个方法从名字可以知道【运算如果不存在】,作用就是如果key在map中不存在就会运算后面的Function函数返回值的value后,插入map。然后方法返回value。

public V computeIfAbsent(K key, Function mappingFunction)

源码SpringBoot中使用:

((List)result.computeIfAbsent(factoryTypeName, (key) -> {
    return new ArrayList();
})).add(factoryImplementationName.trim());

对比:
HashMap - putIfAbsent()
最大区别在于如果map中不存在这个key,会在插入kv后,返回null。而computeIfAbsent返回插入的v。

2.StringUtils-commaDelimitedListToStringArray

方法名称就对字符串进行逗号",“分割后转化为array,我们之前最常用的就是split(”,")。

String[] commaDelimitedListToStringArray(@Nullable String str)

SpringBoot中使用

String[] factoryImplementationNames = StringUtils.commaDelimitedListToStringArray((String)entry.getValue());
3.HashMap-replaceAll

对map中所有值进行替换成新值,k,v处理后将所有v替换成Function返回值。

replaceAll(BiFunction function)

SpringBoot中使用

result.replaceAll((factoryType, implementations) -> {
    return (List)implementations.stream().distinct().collect(Collectors.collectingAndThen(Collectors.toList(), Collections::unmodifiableList));
});
4.Collectors.collectingAndThen

对流进行收集,收集后执行一个Function函数,以收集后的集合为参数,返回任何类型

第一个参数是以什么方法收集,通常是Collectors.toList 收集为列表

第二个参数是收集后要 *** 作的什么Function函数

SpringBoot中使用:

return (List)implementations.stream().distinct().collect(Collectors.collectingAndThen(Collectors.toList(), Collections::unmodifiableList));
总结

在学习源码时候会经常看到大神用这些方法,总结一下一是方便自己学习,明白使用目的,二是之后工作中加以使用,不比重复造轮子。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5612139.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存