2012-10-12 98 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()方法在该标记之前插入。