1

私の仕事は次のとおりでした。

以下に示すファイル システム内のフォルダとファイルを処理できるように、Node クラスを汎用クラスに修正します。

また:

最初に、「サイズ」と「名前」の両方が 1 つのオブジェクトに置き換えられるように Node クラスを変更する必要があります。

ここで、ジェネリック型を使用するようにクラスを変更する最初の部分を行いました。私は2番目の問題で立ち往生しています。2 つの変数の代わりに単一のオブジェクトを渡し、その中で大量の計算を行う方法がわかりません。

ここで単一のオブジェクトを複数の変数に置き換えるにはどうすればよいですか? タイプを変更して移動しようとしましたが、これら 2 つの変数を削除するとすぐにコードが失敗し続けます。

コード:

class Node<T>
   {
   public String name;
   public int size;
   public Node<T> leftChild;
   public Node<T> rightChild;

   public void displayNode()
      {
      System.out.print('{');
      System.out.print(name);
      System.out.print(", ");
      System.out.print(size);
      System.out.print("} ");
      }
   }  // end class Node
4

2 に答える 2

2

次のように再設計します。

class Node<T> {
    public T data;
    public Node<T> leftChild;
    public Node<T> rightChild;

    public void displayNode() {
        System.out.print('{');
        System.out.print(data.toString());
        System.out.print("} ");
   }
   . . .
}

EDITメソッドを書き換える 1 つの方法は、特定の値findを見つけることです。T

public Node<T> find(Comparable<T> target) {
    Node<T> current = root;
    int comp = target.compareTo(current.data);
    while (comp != 0) {
        if (comp < 0)
            current = current.leftChild;
        else
            current = current.rightChild;
        if(current == null)
            return null;
    }
    return current;
}
于 2012-11-06T05:40:49.483 に答える
1

を作成する必要がありますCustom Data Class。そのクラスは、必要な変数を属性としてラップします。

たとえば、あなたの場合: -

public class MyData {
    private String name;  // Your data are enclosed in the data object MyData
    private int size;

    /** Constructors **/
    /** Getters and Setters **/
}

これらの変数を使用している場合は、このクラスのインスタンスを使用してください。そして、@ TedHopp's answerに従って、ジェネリッククラスが変更されます。

そして、あなたのNodeクラスは次のようにインスタンス化されます: -

Node<MyData> node = new Node<MyData>();

だから、あなたのT今は になりMyDataます。したがって、sizeおよびにアクセスする場合nameは、次のようにする必要があります。

node.getMyData().getSize();
node.getMyData().getName();
于 2012-11-06T05:49:48.280 に答える