我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