2011-09-12 20 views
1

我正在爲Android構建我的第一個應用程序,也是我在Java中的第一個應用程序。我似乎無法理解枚舉和數組列表之間的區別。我正在構建一個簡單的閃存卡應用程序,它將閃存卡的問題存儲爲圖像文件和答案。我希望能夠以隨機順序和難度順序顯示抽認卡。將閃存卡存儲在枚舉和陣列中有什麼好處?將圖像存儲爲數組或枚舉:哪個更好?

回答

1

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

+1

也許flashcard話題(地理,音樂,政治等)將成爲enum更好的候選人? –

+0

謝謝!我覺得我現在理解了一個枚舉的用法,現在好多了!我可能會同時使用! – jtagster

2

我會將任何圖像信息存儲在一個數組中。這些可以動態填充,而枚舉不能。

數組還提供了一系列操作方法,稍後可能會派上用場。

如果你創建你也可以有困難的級別是映射的鍵會更容易讓你在一個漸進的順序顯示卡是一個HashMap,使用這樣的結構:

的HashMap <整數ArrayListener < Cards> cardsOnSameDifficultyLvl>

使用ArrayList和HashMap將使應用程序更容易在運行時添加/刪除/編輯卡,並且可以從文本文件或甚至目錄/文件名結構填充結構。 使用枚舉將硬編碼應用程序的業務邏輯中的每張卡,使其難以維護。

+0

感謝您使用HashMap的想法!我將不得不閱讀! – jtagster

相關問題