2

抱歉,我对编程知之甚少,但我现在正在尝试通过尝试 Java 来学习。我非常雄心勃勃地尝试编写一个桌面应用程序,该应用程序将来也将成为一个 Web 应用程序。当然,我希望这 2 个应用程序能够相互同步。

我在想象,比方说.. 任务列表管理员。对于 Web 应用程序,我将使用 MySQL 作为数据库。但是在我的桌面应用程序中,我想我会使用 ArrayList 作为数据库。(或者有没有办法让我使用一些 Java DB 而不是类?)

如果我目前走错了路,我还处于发展的初期,所以我可以很容易地改变方向。但本质上,我有一个类任务和一个类数据库来保存任务。

在我试图保持与 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

    }
}
4

1 回答 1

0

当您在数据库中插入新条目时,数据库会自动分配一个自动增量 ID(我认为您也可以选择您的 ID,但您不应该选择)。如果您没有特定原因,我建议您不要将其包含在 的字段中Task,而是将其用作索引来访问和定位您的ArrayList,或者可能更明确地使用HashMap <Integer, Task>. 否则,您可以创建一个静态字段来生成您的自动增量 ID 或继续您的方式。

于 2013-02-18T20:20:25.327 回答