いくつかのプロパティを実行するループがありますが、そのループ内でいくつかのプロパティを追加する必要があります。プログラムの最初の反復が実行されますが、2回目の反復から次の例外が起こることができます。javaの例外 "java.util.ConcurrentModificationException"解決する方法?
Exception in thread "main" java.util.ConcurrentModificationException: Iterator: started at 5, now 113
at org.apache.jena.tdb.sys.DatasetControlMRSW.policyError(DatasetControlMRSW.java:157)
at org.apache.jena.tdb.sys.DatasetControlMRSW.access$000(DatasetControlMRSW.java:32)
at org.apache.jena.tdb.sys.DatasetControlMRSW$IteratorCheckNotConcurrent.checkCourrentModification(DatasetControlMRSW.java:110)
at org.apache.jena.tdb.sys.DatasetControlMRSW$IteratorCheckNotConcurrent.hasNext(DatasetControlMRSW.java:118)
at org.apache.jena.atlas.iterator.Iter$4.hasNext(Iter.java:303)
at org.apache.jena.atlas.iterator.Iter$4.hasNext(Iter.java:303)
at org.apache.jena.atlas.iterator.Iter$4.hasNext(Iter.java:303)
at org.apache.jena.atlas.iterator.Iter.hasNext(Iter.java:908)
at org.apache.jena.util.iterator.WrappedIterator.hasNext(WrappedIterator.java:90)
at org.apache.jena.util.iterator.Map1Iterator.hasNext(Map1Iterator.java:49)
at org.apache.jena.util.iterator.WrappedIterator.hasNext(WrappedIterator.java:90)
at br.com.edu.dataset.ConstrucaoDataSet.main(ConstrucaoDataSet.java:110)
Java Result: 1
方法:...
public ArrayList<Topic> annotate(String originalMarkup) throws Exception {
PreprocessedDocument doc = _preprocessor.preprocess(originalMarkup);
Collection<Topic> allTopics = _topicDetector.getTopics(doc, null);
ArrayList<Topic> bestTopics = _linkDetector.getBestTopics(allTopics, 0.5);
return bestTopics;
}
....メインを
Property body = model.getProperty("http://data.linkededucation.org/ns/linked-education.rdf#body");
StmtIterator iter = model.listStatements(null, body, (RDFNode) null);
while (iter.hasNext()) {
Statement stmt = iter.nextStatement();
String uri = stmt.getSubject().toString();
String artigo = stmt.getObject().toString();
ArrayList<Topic> bestTopics = annotator.annotate(artigo);
Resource lakPaper = model.createResource(uri);
for (Topic t : bestTopics) {
lakPaper.addProperty(DC.subject, model.createResource(keyValueProperty)
.addProperty(key, t.getTitle())
.addProperty(value, _df.format(t.getWeight())));
System.out.println(" - " + t.getTitle() + "[" + _df.format(t.getWeight()) + "]");
}
}
その問題を解決する方法は?
並べ替え中にリストを同時に変更しないでください。 Javaはそれを行うことはできません。イテレータを使用します。 –