2011-06-14 134 views
2

我有一个Map<Something, List<String>> map。 我想从List<String>中删除String从地图中删除值

这可能吗?我怎么做 ?

我不想删除映射,只是改变条目的'值'。我试过map.values().remove("someString"),但这似乎不起作用。

回答

3

尝试map.get(somethingKey).remove("someString")

1

您还需要确实有一个值来索引到地图中。

然后,你可以做这样的事情:

map.get(mapValue).remove("someString")

1

试试这个:map.get(键)卸下摆臂( “someString”)

1

map.values()返回一个集合List<String>。您必须迭代这些值并在每个列表中搜索您的密钥。

Map<String, List<String>> map = new HashMap<String, List<String>>(); 
    Collection<List<String>> values = map.values(); 
    for(List<String> list : values) { 
     list.remove("someString"); 
    } 
1

是否要从所有字符串列表或特定字符串列表中删除字符串?

如果你想有一个特定的一个,那么你需要通过键获得List<String>

map.get(thekey).remove("someString") 

如果你想删除它们,那么你需要遍历值,因为他们”重新收集List<String>的。

​​
1
Map<Something, List<String>> myMap = ....; 
myMap.get(somethingInstance).remove("someString"); 
0

是的,它是可能的:

Map<String,List<Integer>> map = new HashMap<String, List<Integer>>(); 
List<Integer> intList = new ArrayList<Integer>(); 
intList.add(1); 
intList.add(2); 
intList.add(3); 
intList.add(4); 
map.put("intlist",intList); 
System.out.println(map.get("intlist")); 
intList = map.get("intlist"); 
intList.remove(1); 
intList.add(4);  
//they will be the same (same ref) 
System.out.println(intList); 
System.out.println(map.get("intlist")); 
2

,如果你想删除特定地图项的字符串,你应该使用这样的事情:

if (map.containsKey(somethingParticular) && map.get(somethingParticular)!=null) 
    map.get(somethingParticular).remove("someString") 

如果你想从所有的地图项目中删除“someString”,它更好地做到以下几点:

for(List<String> list : map.values()) { 
    if (list!=null) 
     list.remove("someString"); 
} 
+0

好主意'containsKey()'和空检查。 – Peter 2011-06-14 09:28:57