代码之家  ›  专栏  ›  技术社区  ›  demo Vicky Mahale

如何在MapJava中允许重复值?

  •  1
  • demo Vicky Mahale  · 技术社区  · 7 年前

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

    这是 输出 得到


    但我希望输出如下

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

    有人能告诉我用什么来做这个吗?

    4 回复  |  直到 7 年前
        1
  •  2
  •   Tim Biegeleisen    7 年前

    这越来越难看了,但你可以给我一张列表地图:

    LinkedHashMap<String, List<List<String>>> hashMap_searchresult = new LinkedHashMap<>();
    
    List<List<String>> list = new ArrayList<>();
    list.add(new ArrayList<String>(Arrays.asList("a", "b", "c", "d")));
    list.add(new ArrayList<String>(Arrays.asList("e", "f", "g", "h")));
    hashMap_searchresult.put("a1", list);
    
    for (Map.Entry<String, List<List<String>>> entry : hashMap_searchresult.entrySet()) {
        String key = entry.getKey();
        List<List<String>> value2222 = entry.getValue();
        for (List<String> lst : value2222) {
            String[] arr = new String[list.size()];
            arr = lst.toArray(arr);
            System.out.println("checkstatus" + " key    " + key + " value : " + Arrays.toString(arr));
        }
    }
    

    enter image description here

    Demo

        2
  •  1
  •   codeLover Sumit Tyagi    7 年前

    您可能可以尝试以下类型的集合:

    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());
        }  
    
    }
    
        3
  •  0
  •   dedda1994    7 年前

    要将多个列表作为同一个键的值,需要将它们放在类似于另一个列表的某种容器中。这意味着您将拥有如下类型的映射:

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

        4
  •  0
  •   DEVAS    7 年前