0

Androidは初めてです。

必要なのは?.. 1つのハッシュマップで2つの文字列値を取得できますか?可能です。2つのハッシュマップがあります。これらの2つのハッシュマップ値は、別のハッシュマップで取得する必要があります。これを実装する方法は?助けて..よろしくお願いします..

                String question = c.getString(TAG_QUES);
                System.out.println("Checking ::"+question);
                HashMap<String, String> map = new HashMap<String, String>();
                map.put(TAG_QUES,question);
                System.out.println("questionMap:"+map);
                ques1.add(question);
                String answer = c.getString(TAG_ANSW);
                System.out.println("Checking ::"+answer);
                HashMap<String, String> map1 = new HashMap<String, String>();
                map1.put(TAG_ANSW, answer);
                System.out.println("AnswerMap:"+map1);
                answ1.add(answer);

これらの2つのハッシュマップ値(TAG_QUESIDとTAG_ANSW)を単一のキーの単一のハッシュマップで取得したい(例):map3があり、map3を印刷する場合、これら2つの値を印刷する必要があります。質問IDに基づいて回答を取得する必要があるため、次の質問のために質問IDをインクリメントしたいと思います。plzは私を助けます。

4

3 に答える 3

2

確かに、これはJavaの質問です。これを行うには多くの方法があります。

  1. HashMap<String, String[]> map = new HashMap<String, String[]>();

  2. HashMap<String, ArrayList<String>> map = new HashMap<String, ArrayList<String>>();

  3. 2つの文字列フィールドを持つTAGなどのクラスまたは列挙型(推奨)を作成してから、 Map<String, TAG> map = new HashMap<String, TAG>();

更新された質問は少し不明確なので、私自身の理解に基づいて答えようとしました。あなたがやりたいのは、継続的に質問とその答えを得ることだと思います。

したがって、別のアプローチを試すことができるかもしれません:

class Question{
    String questionText;
    String answer;
    ...
}

//map from questionID to a question
Map<String, Question> questionMap = new HashMap<String, Question>();
//TODO: fill up the map with existing questions.
Question question = questionMap.get(questionID);
System.out.println("Question:" + question.questionText + " Answer:" + question.answer);
//same for another question
于 2013-01-28T12:28:02.137 に答える
1

区切り文字で区切られた値を使用し、後で分割します。

HashMap<String, String> map1 = new HashMap<String, String>();
map1.put(TAG_ANSW, ""+answer+":"+"questionid");

次に、それを取得するときに、それらを分割するだけです。

x= map1.get(TAG_ANSW)
String [] ans_questionId = x.split();

それらをそれぞれの値に保存します。

于 2013-01-28T12:24:05.167 に答える
0
 HashMap<String, ArrayList<String>> multiMap = 
   new HashMap<String, ArrayList<String>>();

 void put(String key, String value) {
     ArrayList<String> values = multiMap.get(key);
     if (values == null) {
        values = new ArrayList<String>();
        multiMap.put(values);
     }
     values.add(value); 
 }

 ArrayList<String> get(String key) {
   ArrayList<String> value = multiMap.get(key);
   return value;
 }

 // Need to specify also which value to remove
 void remove(String key, String value) {
   ArrayList<String> values = multiMap.get(key);
   if (values != null) {
      values.remove(value);
      if (values.size() == 0)
        multiMap.remove(key);
   }
 }

同じキーの繰り返し値を保持したくない場合は、のHashSet代わりにを使用してArrayListください。いずれの場合も、このキーの下にこれまでに保存したすべての値のコレクションが返されます。

于 2013-01-28T12:24:55.927 に答える