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

时间:2011-09-12 13:36:33

标签: java android

我正在构建我的第一个Android应用程序以及我在Java中的第一个应用程序。我似乎无法掌握枚举和数组列表之间的区别。我正在构建一个简单的闪存卡应用程序,将闪存卡上的问题存储为图像文件和答案。我希望能够随机地按照渐进的顺序显示抽认卡。将我的闪存卡存储在枚举与阵列中有什么好处?

2 个答案:

答案 0 :(得分:2)

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

Arrays还提供了一系列操作方法,可能会在以后派上用场。

如果你创建一个HashMap,你也可以将难度作为地图的关键,这将使你更容易以渐进的顺序显示卡片,使用如下结构:

HashMap< Integer difficultyLvl,ArrayList<卡> cardsOnSameDifficultyLvl>

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

答案 1 :(得分:1)

枚举和ArrayList在定义上相距甚远,你应该阅读枚举以完全澄清。

枚举是一个预先确定的值列表,用于描述一件事。我使用枚举来处理状态,可能值的简短列表等。例如

enum Status {
    Initialized,
    InProgress,
    Completed,
    Failed
};

这些都为某些事物的状态定义了一个可能的值。

对于像Flashcard应用程序这样的东西,我会说你可以使用两者的组合。您可能需要一个代表闪卡的类,并将您对Flashcard的想法与Flashcard的图像分开。该图像实际上只是Flashcard的一个属性。

以下是使用两者的示例:

public class Flashcard {

    public enum Difficulty
    {
        Easiest,
        Easy,
        MediumEasy,
        Medium,
        MediumDifficult,
        Difficult,
        MostDifficult
    }

    String question;
    String answer;
    String pathToImageFile;

    Difficulty difficulty;

}

因此,此类将表示您的Flashcard作为对象。您的应用程序可以通过某种方式创建此类(ArrayList<Flashcard>)的ArrayList,并为您的活动提供特定难度级别的实例。

我实际上要做的是使用和整数的难度级别,所以我可以有更广泛的难度级别,必须维护和更新一个巨大的枚举值列表,并在更多和更少的难度之间有一个更清晰的概念,但我想向您展示枚举的常见用法。

以下是enum的维基百科链接: http://en.wikipedia.org/wiki/Enumerated_type