java循环并向地图添加值

时间:2014-07-01 06:30:28

标签: java list map hashmap

使用地图的新手,并想知道如何添加值并循环它以检索值。以下是我的代码:

Map<String, List<String>> map = new LinkedHashMap<String, List<String>>();

for ( int i = 0, m = 1; i < visualcategory.size(); i = i+2, m = m+2) {
    String categoryName = visualcategory.get(m);
    map.put(categoryName , null);
}

我将拥有这个即时假设是正确的,即使是空

MAP {5=null, 11=null, 15=null, 24=null, 96=null, 98=null}

它当前为空,因为下一个进程(下面)将填充该列表,因为它循环通过for条件,除非可以同时添加categoryName和List值吗?

现在,我需要循环并添加每个字符串/ map中的列表

String value1 = value;
String value2 = value;

for (Entry<String, List<String>> entry : map.entrySet()) {
    map.put(value1, entry.getValue());  --> doesn't work
    map.put(value2, entry.getValue());  --> doesn't work
}

我需要这样的东西

MAP {5=[value1,value2,etc], 11=[value1,value2,etc], .......

问题是,它无法正常工作我无法在列表中添加。我需要有关如何从地图添加值的帮助&gt;并循环到它?

3 个答案:

答案 0 :(得分:1)

这就是你需要的:

anotherMap.forEach((k, v) -> myMap.put(k.toString(), v.toString()));

来源:Looping Through a Map in Java

答案 1 :(得分:0)

使用Iterator而不是EntrySet

    Map<String, List<String>> map = new LinkedHashMap<String, List<String>>();
    Iterator itr=map.keySet().iterator();
    while (itr.hasNext()) {
        String key =  itr.next().toString();
        String value=map.get(key).toString();
        System.out.println(key+"="+value);
    }

答案 2 :(得分:0)

创建地图时,请填写空null s,而不是填充List s:

Map<String, List<String>> map = new LinkedHashMap<String, List<String>>();

for ( int i = 0, m = 1; i < visualcategory.size(); i = i+2, m = m+2) {
    String categoryName = visualcategory.get(m);
    map.put(categoryName , new ArrayList<String>());
}

现在,当您准备好填充值时,您可以执行以下操作:

String value1 = value;
String value2 = value;

for (List<String> list : map.values()) {
    list.add(value1);
    list.add(value2);
}

如果您在创建地图时拥有值,则可以更简单:

String value1 = value;
String value2 = value;

Map<String, List<String>> map = new LinkedHashMap<String, List<String>>();

for ( int i = 0, m = 1; i < visualcategory.size(); i = i+2, m = m+2) {
    String categoryName = visualcategory.get(m);
    List<String> values = new ArrayList<String>();
    values.add(value1);
    values.add(value2);
    map.put(categoryName, values);
}