我hava一個SortedMap<Long, List<MyType>>
,我想刪除List<MyType>
,如果List<MyType>
是空的,我也將刪除Long
鍵。迭代SortedMap刪除條目
在Java 8中有一個優雅的解決方案嗎?使用此代碼我得到ConcurrentModificationException
。
SortedMap<Long, List<MyType>> dates = ...
for (final Long key : this.getDates().keySet()) {
for (final Iterator<MyType> iterator = this.getDates().get(key).iterator();
iterator.hasNext();) {
final MyType myType= iterator.next();
if (myType.getMarker().intValue() == marker.intValue()) {
iterator.remove();
if (this.getDates().get(key).isEmpty()) {
this.getDates().remove(key);
}
break;
}
}
}
有趣的是,你替換'MyType'逃走了與'整數'。我想知道這些調用原始代碼的'intValue()'調用是否真的有必要,但是我也不會想到''getMarker()'調用。如果值對象真的是一個'List',一個簡單的'entry.getValue()。removeAll(singleton(marker))'就足夠了...... –
Holger
@Holger當然。我只想展示如何使用迭代器正確刪除。 II使用Integer是因爲編寫基本程序更簡單。 – gontard