2011-09-12 5 views
1

私はアンドロイドのための私の最初のアプリケーションとJavaの私の最初のアプリケーションを構築中です。列挙型と配列リストの違いを把握できないようです。私は画像ファイルと答えとして保存されている質問のフラッシュカードを持つ簡単なフラッシュカードアプリケーションを構築しています。フラッシュカードを無作為に、難易度順に表示できるようにしたい。アレイと比較して私のフラッシュカードを列挙体に格納する利点は何ですか?イメージを配列または列挙型として格納します。これは良いですか?

答えて

1

enumとArrayListの定義がはるかに離れているため、完全に明確にするために列挙型を読むべきでしょう。

enumは、1つのことを記述する値の事前に決められたリストです。私はすべてが何かの状態のための可能な値を定義し、これら

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

たとえばなどのステータス、可能な値の短いリスト、のようなもののために列挙型を使用します。

Flashcardアプリのようなものでは、両方の組み合わせを使用することができます。あなたはおそらくフラッシュカードを表すクラスを必要とし、フラッシュカードのイメージからフラッシュカードのアイデアを分けてください。イメージは実際にはFlashcardの1つのプロパティです。ここで

の両方を使用した例です:

だから、
public class Flashcard { 

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

    String question; 
    String answer; 
    String pathToImageFile; 

    Difficulty difficulty; 

} 

、このクラスは、オブジェクトとしてのあなたのフラッシュカードに相当するであろう。そして、あなたのアプリは、このクラスのArrayList(ArrayList<Flashcard>)を作成し、あなたの活動に特定の難易度のインスタンスを提供する何らかの方法を持つことができます。

私が実際にやることは、難易度レベルではuseとIntegerですので、難易度の範囲を広げてenum値の巨大なリストを更新しなければならないだけでなく、私は例としてenumの一般的な使い方を示したいと思っていました。

ここで列挙のためのウィキペディアのリンクです:HashMapを使用してのアイデアのための http://en.wikipedia.org/wiki/Enumerated_type

+1

フラッシュカードのトピック(地理、音楽、政治など)が列挙型のよりよい候補になるかもしれませんか? –

+0

ありがとう!私はenumの使用法を今よりずっと良く理解しているように感じます!私はおそらく両方を使用します! – jtagster

2

私はどのイメージ情報も配列に格納します。列挙型は動的に生成できますが、動的に生成することはできません。

配列には、後で便利な一連の操作方法もあります。

あなたは次のような構造を使用して、あなたはまた、あなたがプログレッシブ順番にカードを表示することが容易になりますマップのキーをする難しさのレベルを持つことができますHashMapを作成した場合:

のHashMap <整数難易度ArrayListとHashMapを使用すると、アプリケーションを実行時にカードを簡単に追加/削除/編集することができ、構造はテキストファイルやディレクトリ/ファイル名構造からも読み込むことができます。 Enumsを使用すると、アプリケーションのビジネスロジック内のすべてのカードがハードコードされ、保守が難しくなります。

+0

ありがとう!私はそれを読む必要があります! – jtagster

関連する問題