2011-06-14 208 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