簡體   English   中英

將字典實現為排序的單鏈列表Java

[英]Implementing the dictionary as a sorted singly linked list 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)”和“ 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()方法在該標記之前插入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM