: - :ようにCや - Dその後、カテゴリを持つすべての質問に 表示します。
質問を実行するには、カテゴリに関連する質問が必要です。最終的なリストのすべての質問をソートする(@Suraceが行われたように)、コンパレータを使用して
- :
は、次の2つの行う方法があります。
- コンパレータは、より簡潔であり、それはかなり良いアイデアですが、あなたの場合には、それは欠点があり
(キーとして値やカテゴリなどの質問のリストを)マップを作成することは、それはカテゴリを保持しません。
D:あなたの名前は何です - :あなたのレンダリングにそれをしたいしながら、それぞれの質問に関連する:
私は私の出力は次のようになりたいですか?お元気ですか?
C:別の質問1?別の質問2?
B:別の質問3?別の質問4?
質問に格納されているカテゴリ情報で情報を取得することはできますが、カテゴリは外部情報ではなく別のオブジェクトで検索する必要がある計算された情報であるため、
質問をカテゴリ別に関連付けるマップを作成することで、情報のレンダリングを繰り返すだけでよく、より一般的な方法で、カテゴリの反復ごとに追加の処理を実行する必要があります。
ここでコード:
public static void main(String[] args) {
// create your questions
List<Question> questionsInput = new ArrayList<>();
questionsInput.add(new Question("question 1 For A?", Category.A));
questionsInput.add(new Question("question 2 For A?", Category.A));
questionsInput.add(new Question("question 1 For A?", Category.B));
questionsInput.add(new Question("question 2 For A?", Category.B));
Map<Category, List<Question>> map = associateQuestionByCat(questionsInput);
// display info
for (Entry<Category, List<Question>> entry : map.entrySet()) {
System.out.print("cat " + entry.getKey() + ":");
for (Question q : entry.getValue()) {
System.out.print(q.getQuestion());
}
System.out.println("");
}
}
public static Map<Category, List<Question>> associateQuestionByCat(List<Question> questions) {
Map<Category, List<Question>> questionsByCategory = new TreeMap<>(Collections.reverseOrder());
for (Question q : questions) {
final Category currentCat = q.getCat();
List<Question> questionsForCurrentCat = questionsByCategory.get(currentCat);
if (questionsForCurrentCat == null) {
questionsForCurrentCat = new ArrayList<>();
questionsByCategory.put(currentCat, questionsForCurrentCat);
}
questionsForCurrentCat.add(q);
}
return questionsByCategory;
}
}
あなたの代わりに 'のHashMap <リスト、一覧>'の ''のLinkedHashMap <カテゴリー、リスト>を必要とするように見えます。これは、 'LinkedHashMap'、' HashMap'とは異なり、一つのカテゴリを一つのキーとしてカテゴリのリスト全体ではなく一つのキーとしてキーとして使う必要があります。しかし、特定の順序で質問にアクセスしたいのであれば私は 'Map'があなたのデータをモデリングする良い方法であるとは確信していません。 –
Titus
あなたのマップのキータイプの選択肢がわかりません。あなたのキーとしての単一のカテゴリではなく、カテゴリのリストはなぜですか? –
あなたが投稿したコードは、記載された目標とは関係ありません。コードで質問を投稿するのは本当ですが、問題を解決する*試みであるはずです*。 •定義済みの 'Category'定数のリストを' list'として作成します。 '' questionList'のコピーを 'list1'として作成します。' 'list''をすでに持っている順序に並べ替えます。 •奇妙な型の 'Map'を作成します。・' list1'をそれ自身と比較します。・ 'true == true'なら' list1.get(0).getQuestion() 'を出力します。したがって、コード全体を 'out.println(questionList.get(0).getQuestion());に短縮することができました... '... – Holger