我很抱歉我不太了解编程,但我现在正试着通过Java实验来学习。通过尝试编写一个桌面应用程序,我将会非常雄心勃勃,将来也会成为一个Web应用程序。当然,我希望这两个应用程序能够相互同步。
我想象,让我们说..任务列表守护者。对于Web应用程序,我将使用MySQL作为数据库。但是在我的桌面应用程序中,我想象我会使用ArrayList作为数据库。 (或者有一种方法我应该使用一些Java DB而不是类吗?)
如果我目前正走错路,我现在处于开发阶段,所以我可以轻松改变方向。但实际上,我有一个类Task和一个用于保存任务的类Database。
在我试图保持与MySQL记录配对的一致ID的想法中,我试图存储一个taskID。我已经有了一些工作,但我也认为这不是最好的解决方案。我只是看到是否有人可以指出我可以调查和/或应该尝试的不同的,更有效的方向。
这是我到目前为止编译的代码:
import java.util.ArrayList;
public class Todos {
public static class Database {
private ArrayList<Task> database = new ArrayList<Task>();
private int taskCounter = 0;
/*
// This above taskCounter is not being incremented inside my
// addTask method, so I had put the for-loop in there..
public boolean addTask(Task task)
{
boolean addItemSuccessful = false;
int originalArraySize = database.size();
taskCounter++;
database.add(task);
if (database.size() > originalArraySize)
{
addItemSuccessful = true;
}
return addItemSuccessful;
}
*/
public boolean addTask(Task task)
{
boolean addItemSuccessful = false;
int originalArraySize = database.size();
int taskID = 0;
for(int i = 0; i < database.size(); i++) {
if (database.get(i).taskID > taskID) {
taskID = database.get(i).taskID;
System.out.println(taskID);
}
}
taskID++;
task.setTaskID(taskID);
System.out.println(taskID);
database.add(task);
if (database.size() > originalArraySize)
{
addItemSuccessful = true;
}
return addItemSuccessful;
}
public boolean removeTask(int taskID) {
// This code is actually not correct, here but this is the idea.
boolean removeItemSuccessful = false;
int originalArraySize = database.size();
database.remove(taskID);
if (database.size() < originalArraySize)
{
removeItemSuccessful = true;
}
return removeItemSuccessful;
}
}
public static class Task {
private int taskID;
private String task;
private Priority priority = Priority.ZERO;
public enum Priority { ZERO, MAYBE, LOW, MEDIUM, HIGH, EXTREME }
public void setTaskID(int taskID) {
this.taskID = taskID;
}
// .. Other Getters and Setters for Task
}
public static void main(String[] args) {
Database database = new Database();
Task newTask = new Task();
database.addTask(newTask); // Add 1st Task, taskID = 1
database.addTask(newTask); // Add 2nd Task, taskID = 2
database.addTask(newTask); // Add 3rd Task, taskID = 3
database.removeTask(2); // Remove Task 2
database.addTask(newTask); // Add 4th Task, taskID = 4
}
}
答案 0 :(得分:0)
当您在数据库中插入新条目时,db会自动分配一个自动增量ID(我想您也可以选择自己的ID但不应该)。如果您没有具体原因,我建议您不要将其包含在Task
的字段中,而是将其用作访问和定位ArrayList
的索引,或者可能更多明确地使用HashMap <Integer, Task>
。否则,您可以创建一个静态字段来生成自动增量ID,或继续前进。