如何在单个HashMap中获取两个字符串值?

时间:2013-01-28 12:17:11

标签: android list hashmap key

我是Android新手。

我需要的是什么? 我可以在一个hashmap中获得两个字符串值,这是可能的。 我有两个hashmap,这两个hashmap值应该在另一个hashmap中。怎么实现这个?任何帮助..提前感谢..

                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);

我想在单个键中的单个hashmap中获取这两个hashmap值(TAG_QUESID和TAG_ANSW)例如:)如果我有map3并且我打印map3我应该打印这两个值.. 这该怎么做?因为基于问题,我应该得到答案,我想增加下一个问题的问题。请帮助我..

3 个答案:

答案 0 :(得分:2)

确实,这是一个java问题。有很多方法可以做到这一点。

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

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

  3. 创建一个类或枚举(首选),例如TAG,它有两个字符串字段,然后 Map<String, TAG> map = new HashMap<String, TAG>();

  4. 由于您更新的问题有点不清楚,我试图根据自己的理解回答这个问题。我想你想要做的就是不断得到问题和答案。

    你可以尝试另一种方法:

    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
    

答案 1 :(得分: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();

将它们存储到各自的值......

答案 2 :(得分: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。在任何情况下,您都会收到您在此密钥下存储的所有值的集合。