我正在爲Android構建我的第一個應用程序,也是我在Java中的第一個應用程序。我似乎無法理解枚舉和數組列表之間的區別。我正在構建一個簡單的閃存卡應用程序,它將閃存卡的問題存儲爲圖像文件和答案。我希望能夠以隨機順序和難度順序顯示抽認卡。將閃存卡存儲在枚舉和陣列中有什麼好處?將圖像存儲爲數組或枚舉:哪個更好?
回答
enum和ArrayList在定義上相距甚遠,因此您應該仔細閱讀枚舉以完全闡明。
enum是一個預先確定的值列表,它描述了一件事情。我用的東西般的地位,可能值的簡短列表等枚舉例如
enum Status {
Initialized,
InProgress,
Completed,
Failed
};
這些都定義了一些狀態的可能值。
對於像Flashcard應用程序的東西,我會說你可以使用兩者的組合。您可能需要一個代表閃卡的類,並將閃卡的想法與閃卡的圖像分開。該圖片實際上只是Flashcard的一個屬性。
下面是同時使用一個例子:
public class Flashcard {
public enum Difficulty
{
Easiest,
Easy,
MediumEasy,
Medium,
MediumDifficult,
Difficult,
MostDifficult
}
String question;
String answer;
String pathToImageFile;
Difficulty difficulty;
}
那麼,這個類就代表你的抽認卡爲對象。你的應用可以通過某種方式創建這個類的ArrayList(ArrayList<Flashcard>
),併爲你的活動提供一個針對特定難度級別的實例。
我實際上會做的是使用Integer來獲得難度級別,所以我可以有更廣泛的難度級別來維護和更新枚舉值的巨大列表,以及在更多和更少難度之間有更清晰的概念,但我想向你展示一個通用的枚舉例子。
這裏是維基百科的鏈接,枚舉: http://en.wikipedia.org/wiki/Enumerated_type
我會將任何圖像信息存儲在一個數組中。這些可以動態填充,而枚舉不能。
數組還提供了一系列操作方法,稍後可能會派上用場。
如果你創建你也可以有困難的級別是映射的鍵會更容易讓你在一個漸進的順序顯示卡是一個HashMap,使用這樣的結構:
的HashMap <整數ArrayListener < Cards> cardsOnSameDifficultyLvl>
使用ArrayList和HashMap將使應用程序更容易在運行時添加/刪除/編輯卡,並且可以從文本文件或甚至目錄/文件名結構填充結構。 使用枚舉將硬編碼應用程序的業務邏輯中的每張卡,使其難以維護。
感謝您使用HashMap的想法!我將不得不閱讀! – jtagster
- 1. MYSQL - 哪個枚舉執行更好的枚舉('Y','N')或枚舉('1','0')
- 2. 將圖像文件或URL存儲在MySQL數據庫中?哪個更好?
- 3. 使用switch語句常量或枚舉? (哪個更好)? C#
- 4. 哪個更好,NSSet的containsObject或者快速枚舉?
- 5. 如何將字符串數組作爲枚舉類型存儲
- 6. 比枚舉更好
- 7. 哪個更好地存儲和檢索圖像?
- 8. 亞馬遜AWS哪裏更好地存儲圖像加數據?
- 9. 存儲數組中的枚舉VS存儲在字典中?
- 10. 哪個更好的存儲照片作爲字節數組還是存儲照片作爲對象的位圖
- 11. 將圖像名稱一個一個地存儲或作爲mysql數組中的數組存儲?
- 12. Angular 2將枚舉枚舉爲HTML中的組件函數
- 13. 如何在swift中將枚舉存儲到可變數組中
- 14. 較好的是:一個枚舉或單
- 15. 枚舉圖像資源枚舉
- 16. 將圖像作爲一個數組存儲數據時點擊
- 17. 將枚舉存儲爲數據庫中的字符串
- 18. 在RavenDB中將枚舉存儲爲整數
- 19. 將枚舉存儲在NSArray中?
- 20. 哪個更好?使用2個數組或數組對?
- 21. 有沒有從數據庫中存儲枚舉的好方法?
- 22. C++:將枚舉作爲值或作爲const引用傳遞是更好嗎?
- 23. FMDB存儲typedef枚舉值
- 24. MySQL如何存儲枚舉?
- 25. 如何創建一個枚舉或我應該在哪裏存儲它?
- 26. 我應該將枚舉ID /值存儲在數據庫還是C#枚舉中?
- 27. 得到枚舉.values()[]或創建枚舉數組?
- 28. 簡單的數據集存儲,使用枚舉或數據庫?
- 29. 什麼是更好的做法:將圖像存儲在MySQL中或僅在MySQL中存儲圖像路徑?
- 30. 將圖像存儲到數組中
也許flashcard話題(地理,音樂,政治等)將成爲enum更好的候選人? –
謝謝!我覺得我現在理解了一個枚舉的用法,現在好多了!我可能會同時使用! – jtagster