[英]Keeping an independent ID Counter inside Class Object in ArrayList in Java
抱歉,我不太了解編程,但是現在我正在嘗試通過Java進行學習。 通過嘗試編寫一個桌面應用程序,我很有抱負,該應用程序將來也將成為Web應用程序。 當然,我希望兩個應用程序彼此同步。
我在想,說..任務列表管理器。 對於Web應用程序,我將使用MySQL作為數據庫。 但是,在我的桌面應用程序中,我想象我將對數據庫使用ArrayList。 (或者有沒有辦法我應該使用一些Java DB而不是類?)
如果我當前走錯了道路,那我還處於開發階段,因此我可以輕松地改變路線。 但從本質上講,我有一個Task類和一個用於容納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
}
}
當您在數據庫中插入新條目時,數據庫會自動分配一個自動增量ID(我認為您也可以選擇自己的ID,但不應這樣做)。 如果沒有特定原因,建議您不要在Task
的字段中包括它,而應將其用作訪問和定位ArrayList
索引,或者可能使用HashMap <Integer, Task>
更明確地進行操作HashMap <Integer, Task>
。 另外,您可以創建一個靜態字段來生成您的自動增量ID,也可以繼續進行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.