Comparator.naturalOrder() 方法函数是个啥?请看正文解释……
Comparator.naturalOrder() 方法函数,其实是为简化操作,也可以理解为提升方法美观度,提高可理解性。针对 naturalOrder() ,API 的介绍是这么写的:“Returns a comparator that compares {@link Comparable} objects in natural”。什么意思呢?说白了就是将之前提倡的 compare 比较表达式给替换了,改由 Comparator.naturalOrder() 内部实现。
源码参考:
/**
* Returns a comparator that compares {@link Comparable} objects in natural
* order.
*
* <p>The returned comparator is serializable and throws {@link
* NullPointerException} when comparing {@code null}.
*
* @param <T> the {@link Comparable} type of element to be compared
* @return a comparator that imposes the <i>natural ordering</i> on {@code
* Comparable} objects.
* @see Comparable
* @since 1.8
*/
@SuppressWarnings("unchecked")
public static <T extends Comparable<? super T>> Comparator<T> naturalOrder() {
return (Comparator<T>) Comparators.NaturalOrderComparator.INSTANCE;
}
在编码中,如果我们使用了 compare 比较表达式,即“(e1, e2) -> e1.compareTo(e2)”,代码编辑器一般会进行着色(暗黑色)进行提示。
两种风格的编码对照,强烈推荐使用 Comparator.naturalOrder() ,以 Integer 类型的集合获取最大值为例:
/**
* @Author: HuangLongPu
* @Date: 2020/12/2 23:23
*/
public class Test {
public static void main(String[] args) {
List<Integer> array = Arrays.asList(3, 2, 1, 5, 6, 4);
Integer compareMax = array.stream().distinct().max((e1, e2) -> e1.compareTo(e2)).get();
System.out.println("compare type max > " + compareMax);
Integer naturalOrderMax = array.stream().distinct().max(Comparator.naturalOrder()).get();
System.out.println("naturalOrder type max > " + naturalOrderMax);
}
}
从输出的结果来看,两种写法结果是一致的。结果打印如下:
compare type max > 6
naturalOrder type max > 6
Process finished with exit code 0
从Java8开始,Java已经不在推荐使用Date作为时间、日期函数,为什么从Java8之后,推荐使用LocalDateTime、LocalDate,而为什么不再推荐使用Date了呢?
Java 开发工具包 (JDK) 18 将于 2022 年 3 月 22 日发布。JDK 18 新功能一览:指定 UTF-8 作为标准 Java API 的默认字符集。
Java 开发中,使用 XStream 将 xml 转为 Java 实体对象时,提示异常信息: 出现如上的异常信息,是因为没有设置权限级别导致,加上权限级别控制即可解决。
已经证实由于 SerializationUtils#deserialize 基于 Java 的序列化机制,可导致远程代码执行 (RCE),使用JDK9及以上版本皆有可能受到影响。
jclass FindClass(const char* name)2.jobject NewObject(jclass clazz, jmethodID methodID, …)3.jobject NewObjectA(jclass clazz, jmethodID methodID, jvalue* args)4.jobject NewObjectV(jclass clazz, jmethod
如果我们有需求需要将Java类的属性及值生成URL格式数据并且按照ASCII码排序,这种需求在项目中特别是和第三方系统进行对接的时候有使用场景。
进入下载页面,分别有 Ultimate 和 Community 版本可供选择,Community 版本即为社区版,是不用激活可直接使用,只是相对于 Ultimate 版本,功能没有那么丰富,但可以满足日常开发需要
2021 年期间,Oracle 为我们带来了 Java 17,在最新的版本中,带来的主要更新有:恢复始终严格的浮点语义增强型伪随机数发生器新的 macOS 渲染管道macOS/AArch64 端口弃用即将删除的
看代码:思路如下:首先采用正则表达式将通配符变量抓取出来,再次使用替换函数(replace)替换为我们实际需要展示的信息即可。
1、解压 2、移动到 /usr/local 目录下 3、进入并查看Java Jdk 目录 4、配置Java环境变量 编辑/etc/profile 文件 如果提示 vim 命令未安装,执行 yum -y
Appearance & Behavior -> Menus and Toolbars -> Navigation Bar Toolbar -> Toolbar Run Actions,然后点击右侧的
该类用于当前布局容器中有View添加,删除,隐藏,显示的时候定义布局容器自身的动画和View的动画。
Elasticsearch 安装启动依托于Java 环境,首先得确保已正确安装了Java,并配置好环境变量,要求java 7或以上或最新的版本。
jQuery 控制 div 显示 jQuery 控制 div 隐藏 简单略举了两种方式,在实际使用时,重写 css 样式和 jQuery 方法使用一直即可。