如何在Map Java中允许重复值?

时间:2018-08-23 10:38:48

标签: java android collections

我正在使用Autocompletetextview,所以我想显示重复的名称...该名称来自服务器...我尝试了一些下面的Java代码示例,无法正常工作...

public class EmptyActivity extends AppCompatActivity {

    LinkedHashMap<String, ArrayList<String>> hashMap_searchresult = new LinkedHashMap<String, ArrayList<String>>();


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_empty);
        hashMap_searchresult.clear();

        hashMap_searchresult.put("a1",new ArrayList<String>(Arrays.asList("a","b","c","d")));
        hashMap_searchresult.put("a1",new ArrayList<String>(Arrays.asList("e","f","g","h")));

        for (Map.Entry<String, ArrayList<String>> entry : hashMap_searchresult.entrySet()) {
            String key = entry.getKey();
            ArrayList<String> value2222 = entry.getValue();
            Log.e("checkstatus"," key    " + key + " value : " + value2222.toString());
        }
    }
}
  

这是输出得到的

     

键:a1值:[e,f,g,h]


  

但是我希望在下面这样输出

 key :  a1  value : [a, b, c, d]
 key :  a1  value : [e, f, g, h]

谁能告诉我该怎么用?

4 个答案:

答案 0 :(得分:2)

这越来越难看,但是您可以查看列表清单的地图:

<div class="outer">
  <div class="inner">
    asdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasd
  </div>
</div>

enter image description here

Demo

答案 1 :(得分:1)

您可能可以尝试以下收集类型:

LinkedHashMap<String, ArrayList<ArrayList<String>>> hashMap_searchresult = new LinkedHashMap<String, ArrayList<ArrayList<String>>>();

这意味着您可以将字符串列表的列表创建为值,从而可以在此处放置多个列表。但是在处理此类数据时(尤其是在初始化列表时),您需要小心。

Set<String> keySet = hashMap_searchresult.keySet();
Iterator<String> iterator = keySet.iterator();
while(iterator.hasNext())    {
    String key = iterator.next();
    ArrayList<ArrayList<String>> outerList = hashMap_searchresult.get(key);
    for(int index=0;index<outerList.size();index++)    {
        ArrayList<String> innerList = outerList.get(index);
        Log.e("checkstatus"," key    " + key + " value : " + innerList.toString());
    }  

}

答案 2 :(得分:0)

要具有多个列表作为同一个键的值,您需要将它们放在某种容器中,例如另一个列表。这意味着您将具有以下地图类型:

Map<String, List<List<String>>>

现在您可以添加和删除特定键的列表。但是请记住,在使用每个键之前,必须先为每个键创建一个列表。

答案 3 :(得分:0)

您可以尝试使用Google MultiMap简化代码。 参考:https://google.github.io/guava/releases/19.0/api/docs/com/google/common/collect/Multimap.html