【问题标题】:Implementing the dictionary as a sorted singly linked list Java将字典实现为排序的单链表Java
【发布时间】:2012-10-12 20:43:54
【问题描述】:

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

【问题讨论】:

  • 除非你显示一些代码,否则你不会得到任何答案(特别是因为你提到它是家庭作业)
  • 我的代码正在导入文本文件,我也有链接列表的代码,只是我不知道如何将文本文件放入链接列表,我应该发布什么我有吗?
  • 它说它应该是单链表排序,所以我打算使用collection.sort。也谢谢你,我现在添加它
  • 我仍在努力尝试在 String[] things = {}; 之后在 {} 中获取文本文件的输出; '字符串[] 事物 = {}; List list1 = new LinkedList(); for(String x : things) list1.add(x);'

标签: java dictionary file-io text-files


【解决方案1】:

尝试使用Scanner 读取输入文件

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-30
      • 2014-02-20
      • 2020-04-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多