将字典实现为一个排序的单链表Java



我必须创建一个字典,在其中输入一个由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();
}
}

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

Scanner类有一些方法可以根据您提供的模式迭代令牌。您可以在每次调用"hasNext(pattern)"one_answers"next(pattern。

如果你没有设置任何模式,它会使用这个:

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

最新更新