James Shaji
James Shaji

Reputation: 316

Collections sort not working properly

I am new to Java. I am trying to added few words from a text file to my existing text based word list. I have the below code doing

  1. Add words from an file to existing list
  2. Sort the list of words
  3. Save the words to a text file

"wordList" is an arraylist with existing words.

    private void updateDictionaryFile(String filepath) {
    String textCurrentLine = "";

    BufferedReader dictionaryFile = null;
    try {

        Scanner fileScanner = new Scanner(new File(filepath));
        while(fileScanner.hasNextLine()){
            System.out.println("fileScanner.hasNextLine()  "+  fileScanner.hasNextLine());
            textCurrentLine = fileScanner.nextLine();
            if(textCurrentLine.length() > 0)
            if (!wordList.contains(textCurrentLine)) {
                wordList.add(textCurrentLine);
            }
        }

        Collections.sort(wordList);

        String newFile = filepath.replace(".txt", "_new.txt");
        PrintWriter pw = new PrintWriter(new FileOutputStream(newFile));
        for (int i = 0; i < wordList.size(); i++) {
            pw.println(wordList.get(i).toString());
        }
        pw.close();
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try {
            if (dictionaryFile != null) {
                dictionaryFile.close();
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}

Word listed in new file is not sorted. Am I missing something in between?

Below is the output

A
Achieve
Although
Anything
Ask
Avoid
Badly
Bluma
But
Find
Forget
Goal
Goals
How
In
It
Just
Keep
Know
NOT
Often
Once
One
Psychologists
Reasoning
Reject
Remember
Research
Russian
Shifting
Sidestep
So
Sometimes
Start
Stop
The
This
Those
Under
Visualise
Visualising
We
What
When
With
You
Zeigarnik
a
aa
aah
aahed
aahing
aahs
aal
aalii
aaliis
aals
aardvark
aardwolf
aargh
aarrgh
aarrghh
aas

Upvotes: 0

Views: 2736

Answers (1)

Prabhakaran Ramaswamy
Prabhakaran Ramaswamy

Reputation: 26084

Collections.sort(wordList); will work perfectly. if need to ignore the case then use below code.

Collections.sort(wordList,String.CASE_INSENSITIVE_ORDER);

Upvotes: 5

Related Questions