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

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 に答える
0

スキャナを使用して入力ファイルを読み取ってみてください

于 2012-10-12T20:59:54.023 に答える