簡體   English   中英

在Java的ArrayList中的類對象中保留一個獨立的ID計數器

[英]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,也可以繼續進行。

ArrayList<object> ArrayList 內部<anotherobject>在 class 內部,在 RecyclerView 中發送數據<div id="text_translate"><p>對不起 forms 我是法語的英語</p><p>我有 3 個 class,其中 2 個有 ArrayList。 不幸的是,我的 object 和 2 ArrayList 無法工作。 我在 Android Studio 中使用 Java</p><p> 第一個 class:面板:</p><pre> public class Panel { public String nameUser; public String street; public String panelId; public ArrayList&lt;Block&gt; listBlock; public Panel(String nameUser, String street, String panelId, ArrayList&lt;Block&gt; listBlock) { this.nameUser = nameUser; this.street = street; this.panelId = panelId; this.listBlock = listBlock; } public String getNameUser() { return nameUser; } public void setNameUser(String nameUser) { this.nameUser = nameUser; } public String getStreet() { return street; } public void setStreet(String street) { this.street = street; } public String getPanelId() { return panelId; } public void setPanelId(String panelId) { this.panelId = panelId; } public ArrayList&lt;Block&gt; getListBlock() { return listBlock; } public void setListBlock(ArrayList&lt;Block&gt; listBlock) { this.listBlock = listBlock; } }</pre><p> 第二個 class: 塊:</p><pre> import java.util.ArrayList; public class Block { public String nameLine; public ArrayList&lt;Breaker&gt; listBreaker; public String getNameLine() { return nameLine; } public void setNameLine(String nameLine) { this.nameLine = nameLine; } public ArrayList&lt;Breaker&gt; getListBreaker() { return listBreaker; } public void setListBreaker(ArrayList&lt;Breaker&gt; listBreaker) { this.listBreaker = listBreaker; } public Block(String nameLine, ArrayList&lt;Breaker&gt; listBreaker) { this.nameLine = nameLine; this.listBreaker = listBreaker; } }</pre><p> 第三課(最后一課):斷路器:</p><pre> public class Breaker { public String name; public String utilisation; public Breaker(String name, String utilisation) { this.name = name; this.utilisation = utilisation; } public String getNom() { return name; } public void setNom(String nom) { this.name = name; } public String getUtilisation() { return utilisation; } public void setUtilisation(String utilisation) { this.utilisation = utilisation; } }</pre><p> 我的主要活動:</p><pre> public class Activity_PanelHome extends AppCompatActivity { private ArrayList&lt;Panel&gt; listPanel; private ArrayList&lt;Block&gt; listBlock; private ArrayList&lt;Breaker&gt; listBreaker; private RecyclerView recyclerView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_panelhome); recyclerView = findViewById(R.id.recyclerViewHomePage); ArrayList&lt;Panel&gt; listPanel = new ArrayList&lt;&gt;(); List&lt;Block&gt; listBlock = new ArrayList&lt;&gt;(); List&lt;Breaker&gt; listBreaker = new ArrayList&lt;Breaker&gt;(); setUserInfo(); setAdapter(); } private void setAdapter() { RecyclerAdapter adapter = new RecyclerAdapter(listPanel); RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getApplicationContext()); recyclerView.setLayoutManager(layoutManager); recyclerView.setItemAnimator(new DefaultItemAnimator()); recyclerView.setAdapter(adapter); } private void setUserInfo() { listBreaker.add(new Breaker("BreakerName","BreakerUtilisation")); listBlock.add(new Block("BlockName",listBreaker)); listPanel.add(new Panel("PanelUserName","PanelStreet","PanelId",listBlock)); } }</pre><p> 我得到的錯誤</p><pre>Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.util.ArrayList.add(java.lang.Object)' on a null object reference at com.example.application.Activity.Activity_PanelHome.setUserInfo(Activity_PanelHome.java:48) at com.example.application.Activity.Activity_PanelHome.onCreate(Activity_PanelHome.java:36)</pre><p> Ligne 36:(這是方法)</p><pre> setUserInfo();</pre><p> 利格 48:</p><pre> listBreaker.add(new Breaker("BreakerName","BreakerUtilisation"));</pre><p> 預先感謝您的幫助:)</p></div></anotherobject></object>

[英]ArrayList<object> inside ArrayList<anotherObject> inside a class, to send the data in RecyclerView

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

相關問題 如何在java中的類中創建一個帶有對象的Arraylist 在ArrayList Java中查找對象 對象構造函數中的Java ArrayList 將Java ArrayList <Custom Class>轉換為ArrayList <Object> 不同對象類的Java arraylist 將對象保存在另一個類的arraylist內 Java 保持 pojo 數據存儲獨立 Java ArrayList不保留元素 ArrayList<object> ArrayList 內部<anotherobject>在 class 內部,在 RecyclerView 中發送數據<div id="text_translate"><p>對不起 forms 我是法語的英語</p><p>我有 3 個 class,其中 2 個有 ArrayList。 不幸的是,我的 object 和 2 ArrayList 無法工作。 我在 Android Studio 中使用 Java</p><p> 第一個 class:面板:</p><pre> public class Panel { public String nameUser; public String street; public String panelId; public ArrayList&lt;Block&gt; listBlock; public Panel(String nameUser, String street, String panelId, ArrayList&lt;Block&gt; listBlock) { this.nameUser = nameUser; this.street = street; this.panelId = panelId; this.listBlock = listBlock; } public String getNameUser() { return nameUser; } public void setNameUser(String nameUser) { this.nameUser = nameUser; } public String getStreet() { return street; } public void setStreet(String street) { this.street = street; } public String getPanelId() { return panelId; } public void setPanelId(String panelId) { this.panelId = panelId; } public ArrayList&lt;Block&gt; getListBlock() { return listBlock; } public void setListBlock(ArrayList&lt;Block&gt; listBlock) { this.listBlock = listBlock; } }</pre><p> 第二個 class: 塊:</p><pre> import java.util.ArrayList; public class Block { public String nameLine; public ArrayList&lt;Breaker&gt; listBreaker; public String getNameLine() { return nameLine; } public void setNameLine(String nameLine) { this.nameLine = nameLine; } public ArrayList&lt;Breaker&gt; getListBreaker() { return listBreaker; } public void setListBreaker(ArrayList&lt;Breaker&gt; listBreaker) { this.listBreaker = listBreaker; } public Block(String nameLine, ArrayList&lt;Breaker&gt; listBreaker) { this.nameLine = nameLine; this.listBreaker = listBreaker; } }</pre><p> 第三課(最后一課):斷路器:</p><pre> public class Breaker { public String name; public String utilisation; public Breaker(String name, String utilisation) { this.name = name; this.utilisation = utilisation; } public String getNom() { return name; } public void setNom(String nom) { this.name = name; } public String getUtilisation() { return utilisation; } public void setUtilisation(String utilisation) { this.utilisation = utilisation; } }</pre><p> 我的主要活動:</p><pre> public class Activity_PanelHome extends AppCompatActivity { private ArrayList&lt;Panel&gt; listPanel; private ArrayList&lt;Block&gt; listBlock; private ArrayList&lt;Breaker&gt; listBreaker; private RecyclerView recyclerView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_panelhome); recyclerView = findViewById(R.id.recyclerViewHomePage); ArrayList&lt;Panel&gt; listPanel = new ArrayList&lt;&gt;(); List&lt;Block&gt; listBlock = new ArrayList&lt;&gt;(); List&lt;Breaker&gt; listBreaker = new ArrayList&lt;Breaker&gt;(); setUserInfo(); setAdapter(); } private void setAdapter() { RecyclerAdapter adapter = new RecyclerAdapter(listPanel); RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getApplicationContext()); recyclerView.setLayoutManager(layoutManager); recyclerView.setItemAnimator(new DefaultItemAnimator()); recyclerView.setAdapter(adapter); } private void setUserInfo() { listBreaker.add(new Breaker("BreakerName","BreakerUtilisation")); listBlock.add(new Block("BlockName",listBreaker)); listPanel.add(new Panel("PanelUserName","PanelStreet","PanelId",listBlock)); } }</pre><p> 我得到的錯誤</p><pre>Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.util.ArrayList.add(java.lang.Object)' on a null object reference at com.example.application.Activity.Activity_PanelHome.setUserInfo(Activity_PanelHome.java:48) at com.example.application.Activity.Activity_PanelHome.onCreate(Activity_PanelHome.java:36)</pre><p> Ligne 36:(這是方法)</p><pre> setUserInfo();</pre><p> 利格 48:</p><pre> listBreaker.add(new Breaker("BreakerName","BreakerUtilisation"));</pre><p> 預先感謝您的幫助:)</p></div></anotherobject></object> 數組列表的Java數組列表-使用類對象創建多維數組列表
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM