我正在阅读一些使用Guava表的代码,偶尔会抛出ConcurrentModificationException
--我明白这是因为我遍历Table的列并在同一个循环中修改表。有没有一种干净/高效的方法来解决这个问题?我可以做一张桌子吗?在放弃之前删除并期望它能够正常工作?番石榴表ConcurrentModificationException
final Set<Optional<SimpleWorkDataValue>> columnKeys = table.columnKeySet();
for (final SimpleWorkDataValue timeSeriesValue : timeSeriesValues) {
final Optional<SimpleWorkDataValue> rowKey = Optional.of(timeSeriesValue);
for (final Optional<SimpleWorkDataValue> columnKey : columnKeys) {
if (!table.contains(rowKey, columnKey)) {
table.put(rowKey, columnKey, ResultSet.EMPTY);
}
}
}
显而易见的解决方案是使用一个临时表,然后'table.putAll(温度);' - 不知道你是否能找到比这更有效的东西。 – assylias 2013-04-03 23:39:46
你可以发布这个答案,所以我可以upvote。我会尝试一下。另外它会有帮助,看看它在一个片段 – 2013-04-03 23:42:13