簡體   English   中英

如何從ArrayList中獲取重復的值?

[英]How can I get duplicated values from ArrayList?

有我的代碼:

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;


public class CompareFile {

    CompareFile() {}

    boolean check = false;
    int count = 0;

    /*
     * this method return a File type variable
     * variable path - this parameter takes a path in specified root
     * also it's a private method and he should be called with help by class object
     */
    public File find(File path) throws FileNotFoundException {
        PrintWriter writer = new PrintWriter("D:/Photos/name.txt");

        ArrayList<String> buffer = new ArrayList<String>();

        /*
         * let's create array of files
         * where must be all found files
         * We use File[], and named 'files'
         * variable files takes on list of found files
         * with help by listFiles method, that
         * return list of files and directories
         */
        File[] files = path.listFiles();
        //System.out.println(files.toString());

        try {       
            /*
             * we'll ought use the for each loop
             * in this loop we'll create File type variable 'file'
             * then we'll do iterating for each expression from variable files
             */
            for (File file : files) {
                //print all found files and directories

               //if file or directory exists
                if (file.isDirectory()) {

                    //recursively return file and directory
                    find(file);
                } 
                else {
                        buffer.add(file.getName());
                            System.out.println(file);
                }
            }
        }
        catch (Exception e)  {
            System.out.print("Error");
        }
        finally{
            if ( writer != null ) 
                writer.close();
        }


       /*
            Iterator<String> i = buffer.iterator();
                while(i.hasNext()) {
                    System.out.println(i.next());
                }*/

        return path;
    }

    public static void main(String[] args) throws FileNotFoundException  {
        File mainFile = new File("D:/Photos/");

        CompareFile main = new CompareFile();
        main.find(mainFile);
    }
}

如果我使用排序,則排序后的結果不好,因為目錄“ Photos”中的第一行,目錄“ Photos / sub”中的第二行,讓我們看一下屏幕:我想你明白了)

http://s10.postimg.org/7hcw83z9x/image.png

您需要跟蹤樹中的位置,更改find方法以采用路徑:

public File find(File path, string path="") throws FileNotFoundException

當您遞歸調用find方法時: find(file, path + file.getName() + "/")

然后,當您添加到列表中時,使用buffer.add(path + file.getName());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM