繁体   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