我正在java中为类项目制作待办事项列表。在jList中,我显示一个日期和一个字符串,表示日期和当天需要完成的事情。我还希望能够按照它们上的日期对这些事件进行排序,以便更早到期的任务首先出现。我知道如何使用冒泡排序对日期列表进行排序,但我不知道如何将其应用于我的列表,因为每个项目都包含日期和字符串。这是我到目前为止的代码。有谁知道我将如何按顺序排序日期并保持字符串附加到他们的日期。谢谢。
public class ToDoListManager {
final int maxitems = 20;
int items = 0;
String[] toDoList = new String[20];
Date[] Dates = new Date[20];
String addItem(String toDo, Date date) {
if (items == maxitems) {
return ("No more Space");
} else if (toDo.equalsIgnoreCase("") || (toDo == null) || (date == null)) {
return ("All fields required");
} else if (items < maxitems) {
Dates[items] = date;
SimpleDateFormat dt1 = new SimpleDateFormat("yyyy-MM-dd");
toDoList[items] = "On " + dt1.format(date) + " " + toDo;
items = items + 1;
return (toDo + " Was Added to the List");
}
return null;
}
void Order(Date[] dates) {
Date temp;
boolean fixed = false;
while (fixed == false) {
fixed = true;
for (int i = 0; i < dates.length - 1; i++) {
if (dates[i].before(dates[i + 1])) {
temp = dates[i + 1];
dates[i + 1] = dates[i];
dates[i] = temp;
fixed = false;
}
}
}
System.out.println(dates);
}
String[] getItems() {
String[] displayList = new String[items];
for (int i = 0; i < items; i++) {
displayList[i] = toDoList[i];
}
return displayList;
}
}
答案 0 :(得分:1)
为什么不使用Date-&gt; String&gt;的排序地图?
答案 1 :(得分:1)
你在问题中提到了JList,因此我假设你想看到排序的TODO。这是一种可能的方法:
JList由ListModel<E>
实例支持。这是一个泛型类,可以包含E
的实例列表。因此,将它连接在一起的可能方法是:
答案 2 :(得分:0)
迈克尔提到的另一种方法是拥有一个对象。那将存储你想要的变量,日期和字符串。如果您将来想要添加另一个变量,您可以轻松地将其添加到对象,而无需编辑存储对象的列表。
public class Todo {
private Date date;
private String info;
public Todo(Date date, String info){
this.date = date;
this.info = info;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
}
答案 3 :(得分:0)
这大致是我构建应用程序的方式。为简洁起见,我遗漏了order
和getItems
方法。
public class ToDoListManager {
private static class ToDo
{
public final String text;
public final Date date;
public ToDo(String text, Date date)
{
this.text = text;
this.date = date;
}
}
final int maxItems = 20;
final List<ToDo> todos = new LinkedList<>();
String addItem(String text, Date date) {
if (todos.size() == maxItems) {
return ("No more Space");
} else if (text == null || text.equalsIgnoreCase("") || date == null) {
return ("All fields required");
} else if (todos.size() < maxItems) {
final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
text = "On " + format.format(date) + " " + text;
todos.add(new ToDo(text, date));
return (text + " Was Added to the List");
}
return null;
}
}
一旦你抛弃原始数组而转向集合,你开始使用类就可以看到事情变得更加简单了。
现在回答您的问题:使用Collections.sort(todos)
。
为了对列表进行适当排序,您需要ToDo
来实施Comparable<ToDo>
。我会留给你研究和实施。