java - 在一段时间内使用 Collections.max (java)
问题描述
所以我有一个List<Period> periods = new Arraylist<>();
存储我从数据库中获取的日期。(期间是我自己的课,忘了说)
列表看起来像这样:2012-02-03, 2012-02-04, 2012-03-05, 2012-03-07, 2012-03-08, 2012-03-09, 2012-03-10
我需要从列表中找到最大的句点。所以结果应该是period: 2012-03-07 to 2012-03-10
。
现在我想我会使用这样的集合方法:Period biggestperiod = Collections.max(periods);
除了它不起作用,我得到下一个错误:“集合中的 max(java.util.Collection) 不能应用于 (java.util.List) 原因;没有实例类型变量 T 存在以便 Period 符合 Comparable 。
在编程方面,我是一个完全的菜鸟,所以有人能指出我正确的方向吗?
解决方案
我猜 Period
是你自己的类之一,如果它是 Java 的Period
,你必须使用Collections.max
额外的Comparator
你不能使用Collections.max
没有它的函数。要使用Collections.max
没有附加的方法Comparator
,Period
必须实现Comparable
-java.time.Period
不。
请参阅https://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#max(java.util.Collection)以供参考和https://docs.oracle.com/javase/ 8/docs/api/java/time/Period.html为Period
类。
我刚刚写了一个简单的例子来说明它是如何工作的:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Number implements Comparable
{
public int number;
public Number(int number)
{
this.number = number;
}
@Override
public int compareTo(Object arg0)
{
if (number > ((Number) arg0).number) {
return 1;
}
if (number == ((Number) arg0).number) {
return 0;
}
if (number < ((Number) arg0).number) {
return -1;
}
return -2;
}
public static void main(String[] args)
{
Number one = new Number(1);
Number three = new Number(3);
Number two = new Number(2);
List<Number> numberList = new ArrayList<>();
numberList.add(one);
numberList.add(three);
numberList.add(two);
System.err.println(Collections.max(numberList).number);
}
}
推荐阅读
- javascript - 当组件未在其中呈现时,如何在空 div 中显示消息?
- node.js - 在 node-sass 上安装期间在 Python 37-32 中出现命令失败
- jenkins - 如果下游作业中的构建失败,如何向在 Jenkins 中触发上游作业的用户发送电子邮件
- firebase - 初始化 Firebase 会引发错误 - Flutter
- r - 从 for 循环绘图
- node.js - child_process.exec ffmpeg 无限期挂起
- javascript - 扩展所有工作表的搜索范围
- node.js - Bookshelf.js 中的条件
- javascript - 前后端共享类型定义
- meteor - 如何下载 Meteor Galaxy 上的所有日志