【发布时间】:2015-12-13 15:55:57
【问题描述】:
我有一堆日期添加到待办事项列表list2016,现在我需要这些待办事项列表项按日期排序(最早在前,最晚在后)。
这一切都应该发生在我的 add 方法中,但我不知道该怎么做。有什么想法吗?
public class ToDoListEntry
{
String task;
LocalDate date;
ToDoListEntry next;
public ToDoListEntry(LocalDate date, String task)
{
this.task = task;
this.date = date;
}
}
接下来是我尝试添加一个数组但没有奏效的地方:
public class ToDoList
{
ToDoListEntry first;
int size;
public ToDoList ()
{
first = null;
size = 0;
}
public void add(ToDoListEntry newTask)
{
if (first == null)
{
first = newTask;
}
else
{
ToDoListEntry zeiger = first;
while (zeiger.next != null)
{
zeiger = zeiger.next;
}
zeiger.next = newTask;
}
size++;
}
public String print()
{
String result = "";
if (first == null)
{
result = "Empty list!\n";
}
else
{
ToDoListEntry pointer = first;
while (pointer != null)
{
result += "Until " + pointer.date + " Task: " + pointer.task + "\n";
pointer = pointer.next;
}
}
System.out.println(result);
return result;
}
}
最后,主要课程。它应该创建一个新的ToDoList 并打印出来(注意我没有包含print() 方法):
public class MyMainClass
{
public static void main(String[] args)
{
System.out.println("Test 00: Empty List");
ToDoList list2016 = new ToDoList();
list2016.print();
System.out.println("Test 01: add");
list2016.add(new ToDoListEntry(LocalDate.of(2016, 8, 15), "Do workout"));
list2016.add(new ToDoListEntry(LocalDate.of(2016, 6, 3), "Buy apples"));
list2016.add(new ToDoListEntry(LocalDate.of(2016, 10, 11), "Read Books"));
list2016.print();
}
}
【问题讨论】:
-
您将如何手工完成?假设您已经对发票进行了分类,并且您找到了一张旧发票,必须将其插入发票堆中的正确位置。你的策略是什么?
-
为什么不使用像 ArrayList/LinkedList 这样的内置集合(而不是创建自己的 LinkedList 实现)并使用自定义比较器对其进行排序?
-
是否有理由必须创建自己的链表结构而不是使用 Java 集合类? IE。这是作业吗?
-
@paisanco 是的,这是一个家庭作业,所以我必须使用 LinkedLists
-
在不了解讲师意图的情况下,这个问题很难回答,他们是否希望您找到最有效的算法,或者只要可行就足够了暴力方法?
标签: java sorting date linked-list