2013-06-12 43 views
3

我想閱讀的單詞列表。然後,我想按字母順序排列每個單詞中的每個字符,以便我有一整個單詞列表,其中每個字母都按字母順序排列。例如,如果我想從文本文件中讀取「cat」,「dog」,「mouse」,我會有[a,c,t],[d,g,o]和[e,m,o,s, ü]。Alphabetize個人字符串從列表 - Java

我正在Java中實現這一點。我想過一個鏈表或其他集合,但我不確定如何實現這些。我知道這不像將每個字符串轉換爲char數組或使用數組列表一樣簡單。 (我已經試過這些)

有沒有人有這樣做的任何建議或例子?

基本上,我只是想用算法變得更好。

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

爲什麼不包含您嘗試的一些代碼。你表示你試圖將這些單詞分解爲char數組,並且它不起作用。事實上可以這樣做。告訴我們你是如何嘗試的。 –

+0

@greedybuddha是的,我想分類信件。我認爲它會是一個數組列表 - 或者類似的東西 - 我最終會與另一個列表進行比較。 – David

回答

7

如果你有一個Stringword,您可以通過Arrays.sort

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

獲得word字符的排序char[]我想你會想重複這個過程的集合中的每個成員的話。

如果你有興趣知道幕後發生了什麼,我會敦促你看看source

+0

是的,這是正確的。基本上,我正在閱讀字典文件中的單詞,並且我想按字母順序排列每個單詞的字母。我正在嘗試製作一個字謎解析器。我讀了另一篇推薦這個過程的好帖子。以爲我會試試看。我以前的方法是使用所有排列 - 這看起來非常低效。 – David

1

Java提供了對已經整理好支持:所有你需要的是轉換您Stringchar[]的陣列,在其上調用Arrays.sort,然後轉換成數組回String

但是,如果您想要對算法有一些樂趣,可以嘗試使用線性counting sort:計算原始字母,然後按字母順序排列計數,並寫出count字符數。

+0

這聽起來很有趣。我會研究這個。謝謝。 – David