0

我必须创建一个字典,在其中输入一个包含 5 个句子的文本文件,它会使用其中的单词并使用单链表按字母顺序对它们进行排序。我有文本文件,但确实需要帮助将它们制作成链接列表并对其进行排序。我了解如何创建链接列表,但我不知道如何从文本文件创建它们并对其进行排序。任何帮助,将不胜感激。

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();
  }
}
4

2 回答 2

0

尝试使用扫描仪读取输入文件

于 2012-10-12T20:59:54.023 回答
0

好吧, Scanner 类具有根据您提供的模式迭代令牌的方法。您可以在每次调用“hasNext(Pattern)”和“next(Pattern)”时提供模式(正则表达式),或者通过调用“usePattern(Pattern)”方法来设置默认模式,并使用标准的“ 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() 方法在该标记之前插入。

于 2012-10-13T01:57:26.270 回答