我正在阅读一些使用 Guava 表的代码,偶尔会抛出一个ConcurrentModificationException
- 我理解这是因为我正在遍历表的列并在同一个循环中修改表。有没有一种干净/高效的方法来解决这个问题?我可以在 put 之前做一个 table.remove 并期望它工作吗?
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);
}
}
}