2013-06-12 2 views
3

Я хочу прочитать в списке слов. Затем я хочу по алфавиту каждого из символов в каждом слове, чтобы у меня был весь список слов, где каждая буква в алфавитном порядке. Например, если бы я хотел прочитать в «cat» «dog» «mouse» из текстового файла, я бы имел [a, c, t], [d, g, o] и [e, m, o, s, и].Алфавит отдельных строк из списка - Java

Я реализую это на Java. Я думал о связанном списке или какой-то другой коллекции, но я не совсем уверен, как реализовать их в отношении этого. Я знаю, что это не так просто, как преобразование каждой строки в массив символов или использование списка массивов. (Я уже пробовал это)

У кого-нибудь есть предложения или примеры этого?

В принципе, я просто пытаюсь улучшить алгоритмы.

public class AnagramSolver1 { 

static List<String> inputList = new ArrayList<String>(); 

public static void main(String[] args) throws IOException { 

    List<String> dictionary = new ArrayList<String>(); 
    BufferedReader in = new BufferedReader(new FileReader("src/dictionary.txt")); 
    String line = null; 
    Scanner scan = new Scanner(System.in); 

    while (null!=(line=in.readLine())) 
    { 
     dictionary.add(line); 
    } 
    in.close(); 

    char[] word; 


    for (int i = 0; i < dictionary.size(); i++) { 
     word = inputList.get(i).toCharArray(); 
     System.out.println(word); 
    } 
+0

Как вы планируете использовать коллекцию? Поиск букв определенного слова? Вывести весь список? В порядке реинжининга? алфавитный порядок исходного слова? и т. д. Оптимальное решение зависит от многих факторов. – assylias

+0

Почему бы вам не включить код, который вы пробовали. Вы указали, что пытались сломать слова в массивы символов, и это не сработало. На самом деле это можно сделать так. Покажите нам, как вы это пробовали. –

+0

@ greedybuddha Да, я хотел бы отсортировать письма. Я как бы понял, что это будет список массивов - или что-то в этом роде - что в конечном итоге я сравню с еще одним списком. – David

ответ

7

Если у вас есть String называется word, вы можете получить отсортированный char[] из персонажей word через Arrays.sort

char[] chars = word.toCharArray(); 
Arrays.sort(chars); 

Я предполагаю, что вы хотели бы повторить этот процесс для каждого члена коллекции слов.

Если вам интересно узнать, что происходит за кулисами здесь, я настоятельно рекомендую вам взглянуть на source.

+0

Да, это правильно. В основном я читаю слова из словаря, и я хочу, чтобы в алфавитном порядке буквы каждого слова. Я пытаюсь сделать анаграмму. Я прочитал еще один действительно хороший пост, который рекомендовал этот процесс. Думал, я бы попробовал. В моем предыдущем методе использовались все перестановки, которые кажутся очень неэффективными. – David

1

Java обеспечивает хорошую поддержку для сортировки уже: все, что вам нужно, это преобразование вашего String в массив char[], вызовите Arrays.sort на него, а затем преобразовать этот массив обратно в String.

Если вы хотите немного повеселиться с алгоритмами, вы можете попытаться перейти к линейному counting sort: посчитайте буквы в оригинале, затем перейдите по подсчетам в алфавитном порядке и выпишите count количество символов.

+0

Это звучит интересно. Я займусь этим. Благодарю. – David

Смежные вопросы