我在使用Collections.min时收到NoSuchElementException,我也在网站上阅读了其他相关问题,并了解到如果使用的列表或集合为空,则会收到此异常。但我已经检查过调试代码,列表有值,但我仍然得到异常。
public Date getNewDate(List<MyClass> list1){
Comparator<MyClass> startDate = new Comparator<MyClass>() {
@Override
public int compare(MyClass date1, MyClass date2) {
return date1.getStartDate().compareTo(date2.getStartDate());
}
};
return Collections.min(list1, startDate).getStartDate();
}
答案 0 :(得分:5)
当您的第一个信息来源javadoc明确告诉您时,为什么还需要阅读其他相关问题才能了解这一点?
引用Collections.min()的javadoc:
如果集合为空,则抛出
NoSuchElementException
。
Ergo,您的收藏集(list1
)是空的。
如果您不相信,请尝试捕获并增强错误消息:
try {
return Collections.min(list1, startDate).getStartDate();
} catch (NoSuchElementException e) {
throw new RuntimeException("Got NoSuchElementException but list size is " +
list.size() + " (list is: " + list + ")", e);
}
向我们展示执行此操作时产生的完整堆栈跟踪,以证明当您获得异常时列表不为空。
这也将向我们展示列表的内容,这是提供a Minimal, Complete, and Verifiable example的一部分。