Моя консоль выводит теги года из файла XML, подобного этому
2020
2019
1997
2017
2019
2017 (...)
Из этих данных, которые я хочу сохранять каждый год в ArrayList, например:
Years found on file: 2020 , 2019 , 1997 , 2017
Я много чего перепробовал, но ни одна из них, похоже, не работает. Я пытаюсь найти решение с помощью следующего кода:
public class Publications {
public static void main(String[] args) throws IOException {
File file = new File("dblp-2020-04-01.xml");
FileInputStream fileStream = new FileInputStream(file);
InputStreamReader input = new InputStreamReader(fileStream);
BufferedReader reader = new BufferedReader(input);
String line;
ArrayList<String> publicationsList = new ArrayList<String>();
int i = 0;
while ((line = reader.readLine()) != null) {
Publications publ = new Publications();
Pattern pattern = Pattern.compile("<year>(.+?)</year>", Pattern.DOTALL);
Matcher matcher = pattern.matcher(line);
if (matcher.find()) {
String year = matcher.group(1);
if (publicationsList.size() == 0) {
publicationsList.add(year);
}else{
for(String publications1 : publicationsList){
if(!(publications1.contains(year))){
publicationsList.add(year);
}
}
}
}
}
//READING TEST
for (String publications1 : publicationsList){
System.out.println(publications1);
}
}
}
Ошибки:
Exception in thread "main" java.util.ConcurrentModificationException
at java.base/java.util.ArrayList$Itr.checkForComodification(ArrayList.java:1042)
at java.base/java.util.ArrayList$Itr.next(ArrayList.java:996)
at Publications.main(Publications.java:26)