2013-09-24 40 views
-2

我有一个已经填充的散列表。我必须映射到123删除hashmap中的值

ABC123我首先声明一个对象称为测试,并给它ABC123

的值,然后检查我的HashMap包含ABC123。

如果是真的,那将进入if语句,并获得ABC123的映射,并把它变成一个字符串名为值

然后,我只想与123

现在我的HashMap ABC123更换关键是123,我的价值是123

我将如何摆脱123

的价值我想能够映射打印出123,得到空

public void replace1(Map<String, String> barcodeMap) { 
    Object test = "abc123"; 

    if (barcodeMap.containsKey(test)) { 

    System.out.println("HERE I WILL PRINT THE MAPPING OF AGILENT   " + barcodeMap.get(test)); //output here is 123 

    String value = barcodeMap.get(test); 

    System.out.println("THE MAPPING OF VALUE SHOULD BE NULL  " + barcodeMap.get(value)); //output here is null 

    barcodeMap.put(value, barcodeMap.remove(test)); 

    System.out.println("HERE I WILL PRINT THE MAPPING OF AGILENT it should be null::::: " + barcodeMap.get(test)); //output here is null 

    System.out.println("HERE IS THE MAPPING OF VALUE::::::::::::::  " + barcodeMap.get(value)); //output here is 123, i want it to be null here 

    } 

}

回答

2

使用remove methodMap删除键/值对(参见链接的文档)。

barcodeMap.remove(value); 

...我还没有对你为什么这样做无论你做什么,虽然,因为你添加一个键/值对,你显然不希望在Map清楚。


如果你想关键仍然,但有null作为它的价值,这是更简单 - 只需添加你真正想要的价值的关键。所有现在一条线:

barcodeMap.put(barcodeMap.remove(test), null); 

这增加的barcodeMap.remove(test)的结果作为重点barcodeMap,与null值。

+0

当我使用barcodeMap.remove(值);它从我的散列表中完全删除了条目,我仍然希望该键位于那里,而不是它的映射,例如,如果在我使用barcodeMap.remove(value)之后;并执行以下操作: if(barcodeMap.containsKey(value)){System.out.println(“SUCCCCEEEEEEEESSSSSS”); } 我想成功,但价值被删除Completley – user2811419

+0

@ user2811419啊,我明白了。我已经更新了解决该问题的答案。 –

1

检查JavaDoc的HashMap。

有一个remove()方法。

+0

当我使用barcodeMap.remove(value);它从我的散列表中完全删除了条目,我仍然希望该键位于那里,而不是它的映射,例如,如果在我使用barcodeMap.remove(value)之后;并执行以下操作: if(barcodeMap.containsKey(value)){System.out。的println( “SUCCCCCEEEEEEESSSSSS”); } 我想成功,但价值被删除completley – user2811419

+1

你可以为同一个键添加一个空值,它应该覆盖以前的值。 –

2

相反barcodeMap.put(value, barcodeMap.removre(test));使用

barcodeMap.remove(test); barcodeMap.put(value, null);