我有一個方法test(),其中我試圖比較兩個LinkedHashMaps彼此,並通過刪除鍵/值對,如果它在兩個LHM中找到修改其中一個映射的內容。運行此方法時,我不斷收到ConcurrentModificationException。我明白爲什麼我得到異常(因爲我試圖修改正在循環的列表)。但我不確定如何去解決這個問題。到目前爲止,我有此代碼:ConcurrentModificationException Woes
private void test() {
LinkedHashMap<String, BigDecimal>testBene = new LinkedHashMap<String, BigDecimal>();
LinkedHashMap<String, BigDecimal>testDly = new LinkedHashMap<String, BigDecimal>();
testBene.put("ABCDEFG", BigDecimal.ZERO);
testBene.put("BCDEFGH", BigDecimal.ONE);
testBene.put("CDEFGHI", BigDecimal.TEN);
testDly.put("BCDEFGH", BigDecimal.ONE);
testDly.put("Foo", BigDecimal.TEN);
testDly.put("Bar", BigDecimal.TEN);
for (Entry<String, BigDecimal> beneKeySet : testBene.entrySet()) {
if (testDly.containsKey(beneKeySet.getKey())) {
for (Entry<String, BigDecimal> dlyKeySet : testDly.entrySet()) {
if ((dlyKeySet.getKey().equals(beneKeySet.getKey())) &&
dlyKeySet.getValue().equals(beneKeySet.getValue())) {
testBene.remove(dlyKeySet.getKey());
}
}
}
}
}
你知道,你是比較'的'==代替'.equals()'字符串?請參閱[如何比較Java中的字符串?](http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) – jlordo 2013-04-04 12:56:34
@jlordo是的,我爲了效率而定。對不起,就像我說的那只是一個測試。 – ResourceReaper 2013-04-04 13:11:33
'=='可能更有效,但對於內容相同的兩個字符串不能保證是真的。 – jlordo 2013-04-04 13:13:10