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