将图像存储为数组或枚举:哪个更好?

问题描述:

我正在为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

+1

也许flashcard话题(地理,音乐,政治等)将成为enum更好的候选人? –

+0

谢谢!我觉得我现在理解了一个枚举的用法,现在好多了!我可能会同时使用! – jtagster

我会将任何图像信息存储在一个数组中。这些可以动态填充,而枚举不能。

数组还提供了一系列操作方法,稍后可能会派上用场。

如果你创建你也可以有困难的级别是映射的键会更容易让你在一个渐进的顺序显示卡是一个HashMap,使用这样的结构:

的HashMap <整数ArrayListener < Cards> cardsOnSameDifficultyLvl>

使用ArrayList和HashMap将使应用程序更容易在运行时添加/删除/编辑卡,并且可以从文本文件或甚至目录/文件名结构填充结构。 使用枚举将硬编码应用程序的业务逻辑中的每张卡,使其难以维护。

+0

感谢您使用HashMap的想法!我将不得不阅读! – jtagster