【发布时间】:2015-11-04 20:55:30
【问题描述】:
我有一个包含名称和日期的任务对象。日期值必须是 String。一个例子是11/9/2015 23:00 与11/24/2015 12:00 进行比较。
我需要帮助为此编写compareTo(),以便首先显示日期最快的任务。我所拥有的是不正确的,因为它没有正确比较。我知道有其他选择,但我需要使用 String 执行此操作。我考虑过使用.split() 将mm/dd/yyyy 分解为"/",但不知道该怎么做。
public class Task implements Comparable<Task> {
/** Task name. */
private String name;
/** Task due date. */
private String dueDate;
/**
* Initializes a tasks name and due date.
* @param n Name
* @param d due date
*/
public Task(String n, String d) {
name = n;
dueDate = d;
}
/**
* Accessor for task name.
* @return Task name.
*/
public String getName() {
return name;
}
/**
* Accessor for task due date.
* @return Task due date.
*/
public String getDueDate() {
return dueDate;
}
/**
* Compares the due dates of the tasks to get the soonest to the front of the list.
* @param t The task to compare.
* @return The tasks in chronological order.
*/
@Override
public int compareTo(Task t) { //Need help here.
int val = dueDate.compareTo(t.getDueDate());
if(val == 0) {
val = name.compareTo(t.getName());
}
if(dueDate.compareTo(t.getDueDate()) > 0) {
val = -1;
}
if(dueDate.compareTo(t.getDueDate()) < 0) {
val = 1;
}
return val;
}
【问题讨论】:
-
能否转换为 Date 对象,然后进行比较?
-
@AbtPst 不,我必须使用
String -
@AlexShesterov 不太重复,因为这个问题是关于日期时间的,而您的链接是关于日期的。这是另一个几乎重复但仅限日期的内容:How to get date in string and compare it using java。
-
您能解释一下为什么您必须使用字符串而不是日期吗?
标签: java string date comparable compareto