编写一个读取大型字符串文件的Java程序,并确定所有字符串是否都是唯一的

时间:2014-02-26 17:29:03

标签: java collections arraylist

我需要完成程序的一部分,找出读取文本文件中是否有任何重复项。给定的基本代码如下,

public class Lab6
{
    public static void main( String args[] ) throws Exception
    {
            ArrayList<String> list = new ArrayList<String>();
            BufferedReader infile =  new BufferedReader( new FileReader( args[0] ) );
                    long startTime = System.currentTimeMillis();
            while (infile.ready())
                    list.add( infile.readLine() );
            infile.close();
            System.out.printf( "List contains %d Strings.\n",list.size());
            boolean hasDupe = false;
            String dupe="";

            /*  YOUR CODE IN HERE
                    SET hasDupe to T/F
                    Do it EFFICIENTLY! i.e. < N squared
            */

            if (hasDupe)
                    System.out.println("List contains dupe: " + dupe );
            else
                    System.out.println("List contains NO dupes.");
            long endTime = System.currentTimeMillis();
            long ms = endTime-startTime;
            System.out.printf("Elapsed time: %f seconds\n", ms/1000.0);
    }
}

我需要在不使用蛮力方法的情况下完成它。

1 个答案:

答案 0 :(得分:2)

您可以创建一个HashSet对象并开始向其添加所有字符串。如果有重复,HashSet将在add()方法上返回false,这是重复的提示。你可以在O(n)时间内完成它。