Добавлено больше файлов, чем мне нужно - PullRequest
0 голосов
/ 18 марта 2019

Добавление в мой ArrayList, кажется, создает больше элементов, чем я ожидал - после добавления второго элемента файлы выглядят дублированными.

public void addFileToList(File file) throws IOException {
        if (myList.size() == 0) { //size of my Array
            myList.add(file);
        } else {
            for (ListIterator<File> iterator = myList.listIterator(); iterator.hasNext();) {
                    if (!FileUtils.contentEquals(file, iterator.next())) {//filter files
                        iterator.add(file);//add 8 elements 
                    }
            }
        }
    }

Основной класс

public class Main {
    public static void main(String[] args) throws IOException {


            Branch br = new Branch("master"); //create Class
            File file1 = new File("/Users/pro/IdeaProjects/MyNewGit/1.txt"); //create Files
            File file2 = new File("/Users/pro/IdeaProjects/MyNewGit/3.txt");
            File file3 = new File("/Users/pro/IdeaProjects/MyNewGit/4.txt");
            File file4 = new File("/Users/pro/IdeaProjects/MyNewGit/6.txt");



            br.addFileToList(file1); //add Files 
            br.addFileToList(file2);
            br.addFileToList(file3);
            br.addFileToList(file4);
        }

    }

Я добавилПоявилось 4 файла, но 8: Содержимое ArrayList

1 Ответ

1 голос
/ 18 марта 2019

Ваша логика просто неверна:

Допустим, ваш список уже содержит файлы a, b и c. И вы вызываете свой метод с файлом d.

Посмотрите на свою петлю:

for (ListIterator<File> iterator = myList.listIterator(); iterator.hasNext(); ) {
    if (!FileUtils.contentEquals(file, iterator.next())) {//filter files
        iterator.add(file);//add 8 elements 
    }
}

Он проверяет, отличается ли a от d. Это так, поэтому вы добавляете d. Затем он проверяет, отличается ли b от d. Это так, поэтому вы добавляете d снова. Затем он проверяет, отличается ли c от d. Это так, поэтому он снова добавляет d.

Вам необходимо проверить, отличаются ли все файлы от d. И после цикла, когда вы знаете ответ, вы можете добавить новый файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...