Самый быстрый способ вставить слово в правильной позиции в словаре - PullRequest
1 голос
/ 02 ноября 2009

В настоящее время я просто вставляю слово в словарь (ArrayList<String>), а затем сортирую словарь так:

dictionary.add(newWord);
Collections.sort(dictionary, new Comparator<String>(){
    public int compare(String s1, String s2) {
        return s1.compareToIgnoreCase(s2);
    }        
});

Я пытаюсь определить, действительно ли этот путь самый лучший. Другой способ, конечно, найти правильную точку в словаре и вставить туда слово. Проблема в том, что я не смог найти эффективный / надежный способ найти эту точку в словаре. У меня есть несколько идей, которые летают в моей голове, но очень сложно положить ручку на бумагу.

Если у вас есть идея, как это сделать, пожалуйста, не публикуйте какие-либо масштабные кодовые ответы Это часть задания, поэтому вместо того, чтобы публиковать код, вы могли бы рассказать мне, как вы это сделаете? (может в псевдокоде?)

Спасибо.

1 Ответ

8 голосов
/ 02 ноября 2009

Я бы использовал TreeSet<String> вместо ArrayList<String>, потому что TreeSet использует String Comparator для поддержания порядка при вставке. И TreeSet не позволит вам добавить ноль, потому что он использует компаратор String.

import java.util.Set;
import java.util.TreeSet;

public class Dictionary
{
    public static void main(String[] args)
    {
        Set<String> dictionary = new TreeSet<String>();
        dictionary.add("zebra");
        dictionary.add("wildebeast");
        dictionary.add("aardvark");
        System.out.println(dictionary); // will be in the correct alphabetical order.
    }
}
...