我正在构建我的第一个android应用程序,也是我的第一个Java应用程序。我似乎无法理解枚举和数组列表之间的区别。我正在构建一个简单的闪存卡应用程序,将有闪存卡与他们的问题存储为图像文件和答案。我希望能够以随机和难度递增的顺序显示抽认卡。在枚举中存储闪存卡与在数组中存储闪存卡有什么优势?
发布于 2011-09-12 21:51:14
枚举和ArrayList在定义上有很大的不同,您可能应该阅读有关枚举的文章来充分阐明这一点。
枚举是一个预先确定的值列表,用于描述一件事。我使用枚举来表示状态、可能值的简短列表等。
enum Status {
Initialized,
InProgress,
Completed,
Failed
};这些都为某物的状态定义了可能的值。
对于像闪存卡这样的应用程序,我会说你可以使用两者的组合。您可能需要一个表示闪存卡的类,并将您的闪存卡的概念与闪存卡的图像分开。图像实际上只是闪存卡的一个属性。
下面是一个使用这两种方法的示例:
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
发布于 2011-09-12 21:43:13
我会将任何图像信息存储在一个数组中。它们可以动态填充,而枚举则不能。
数组还提供了一系列操作方法,这些方法在以后可能会派上用场。
如果你创建了一个HashMap,你也可以将难度级别作为地图的关键,这将使你更容易以递进的顺序显示卡片,使用如下结构:
HashMap <整数difficultyLvl,ArrayList <卡片> cardsOnSameDifficultyLvl >
使用ArrayList和HashMap将使应用程序更容易在运行时添加/删除/编辑卡,并且可以从文本文件甚至从目录/文件名结构填充结构。使用枚举将硬编码应用程序的业务逻辑中的每个卡,使其难以维护。
https://stackoverflow.com/questions/7388781
复制相似问题