2012-10-12 40 views
0

我要創建一個字典,你輸入5句的一個文本文件,它需要在他們的單詞和字母用單鏈表排序。我有文本文件,但真的需要幫助,使他們成爲一個鏈表並對其進行排序。我知道如何創建鏈接列表,但我不知道如何從文本文件創建它們並對它們進行排序。任何幫助,將不勝感激。實施字典作爲排序的單向鏈表的Java

import java.util.*; 

public class Dictionary { 

    public static void main(String[] args) { 
    String[] things = {"a", "dog", "eats"}; 
    List<String> list1 = new LinkedList<String>(); 
    for(String x : things) 
     list1.add(x); 

    String[] things2 = {"The", "Cat", "Walks"}; 
    List<String> list2 = new LinkedList<String>(); 
    for(String y : things2) 
     list2.add(y); 

    list1.addAll(list2); 
    list2 = null; 

    printMe(list1); 
    printMe(list1); 
    } 

    private static void printMe(List<String> l) { 
    for(String b : l) 
     System.out.printf("%s ", b); 
    System.out.println(); 
    } 
} 
+1

除非你展示一些代碼(特別是因爲你提到它是作業),否則你不會得到任何答案 – shyam

+0

我的代碼是導入文本文件,我也有代碼鏈接列表它只是我不知道沒有如何讓文本文件進入鏈表,我應該發佈我有什麼? – LearninSlow

+0

你可以自由使用Java標準類,或者你應該自己做一些東西(比如排序)嗎? – hyde

回答

0

好,掃描儀類有方法,通過基於您提供其上的圖案標記進行迭代。 可以提供圖案(正則表達式)或者在每次調用「hasNext(模式)」和「下一個(模式)」或通過調用「usePattern(模式)」的方法來設置缺省模式,並使用標準「hasNext()」和「next()」迭代器方法。

如果不設置任何模式,它使用這樣的:

// A pattern for java whitespace 
private static Pattern WHITESPACE_PATTERN = Pattern.compile(
"\\p{javaWhitespace}+"); 

我不會進入正則表達式在這裏,但你的一般流程是:

Scanner scanner = new Scanner(reader); 
scanner.usePattern(Pattern.compile("some regex pattern")); // if you want something other than the default 
while (scanner.hasNext()) { 
    String word = scanner.next(); 
} 

可能的讀者將是java.io.FileReader的一個實例。並且您希望更大的文件吞吐量,將FileReader包裝在java.io.BufferedReader中。

對於排序,您可以在添加完所有單詞後添加Collections.sort(),也可以在添加每個單詞時對列表進行排序,您可以使用由List.listIterator()方法返回的ListIterator迭代現有鏈表,查找第一個元素在詞法上大於該標記,並使用ListIterator.add()方法在該標記之前插入。