首先,我已经看了很多关于这个异常的问题和答案,但是大多数都只是比较简单的整数或者相同的属性。我有一个有两个日期的对象,当其中一个为空时,我将使用另一个进行比较,例如:
public class MyClass {
private LocalDate primaryDate;
private LocalDate secondaryDate;
private String Code;
}
比较方法是:
private List<MyClass> sortByDates(final List<MyClass> listOfClass) {
Comparator<MyClass> comparator = ((Comparator<MyClass>) (first, second) -> {
if (first.getPrimaryDate() == null || second.getPrimaryDate() == null) {
return first.getSecondaryDate().compareTo(second.getSecondaryDate());
}
return first.getPrimaryDate().compareTo(second.getPrimaryDate());
}).reversed().thenComparing(MyClass::getCodeAsLong);
return listOfClass.stream()
.sorted(comparator)
.collect(Collectors.toList());
}
Obs1: secondaryDate
从不为空,但我必须使用< code>primaryDate作为第一个选项进行比较,并且< code>primaryDate从不小于< Code > secondary date < br > OBS 2:< Code > Code 属性保存为字符串,但没有任何字母,因此可以转换为long
唯一的问题是如何处理<code>primaryDate</code>的null
检查以下示例:
我已经在类上实现了Comaprable,它给了我比较方法违反了它的总合同!,由于有一些值返回为 null,代码如下 公共静态比较器名称比较器 = 新比较器() {
我试图使用比较器基于两个字符串的比较对数组列表进行排序,但我最终使用的比较方法违反了它的一般契约错误。如果字符串中出现空值比较,我该如何处理? 密码 错误
我有一个类字段,和。我需要使用对它们进行排序,但我得到了一个异常: java.lang.IllegalArgumentException:比较方法违反了它的一般约定! 我的< code>compareTo方法: 请帮我找出compareTo方法中的错误。谢了。
我目前正在Java中对集合进行排序。我收到了错误消息“比较方法违反了它的一般契约”。我也理解这个错误消息,但我(主要)使用Long类型的构建比较方法。所以我不知道,在这种情况下,排序方法仍然违反了契约。这是我的代码: 这里是错误:
可能的重复: 为什么我的比较方法会抛出异常 — 比较方法违反了其一般合同! 我有这个代码: 有时它会引发以下异常: 为什么? 1) 我该如何避免呢?2) 我怎么能抓住这个例外? 提前谢谢。
对不起,又是一个问题,但我根本不明白这里发生了什么,或者我哪里出错了。 概述:我有一个包含多个-对象。它们有一个和一个。我想按以下条件对它们进行排序,优先级如下所列: 但是当这样做时,我得到以下错误: 我得到的:我在JavaFX项目中也有同样的事情发生,但是在那里我使用而不是。我需要转换为,因为显然Android还不支持方法。 这是启动排序和定义< code>Comperator的方法: 如您所见