0

リンクされたリストクラスを作成して、リストから学生を追加および削除できる簡単なレジスタを作成しました。ただし、リンクされたリストの toString メソッドを作成する方法がわかりません。これを行う最善の方法は何ですか? 前もって感謝します!

import java.util.*;
public class Registry {


LinkedList<Student> studentList
        = new LinkedList<Student>();
//setting my type parameter




public Registry() {}


public void addStudent(Student aStudent) {}


public void deleteStudent(int studentID) {}


public String toString(){}




public String format() {}


}
4

5 に答える 5

3

LinkedList には、AbstractCollection から継承された toString() メソッドが既にあります。

toString

public String toString()

Returns a string representation of this collection. The string representation consists
of a list of the collection's elements in the order they are returned by its iterator,
enclosed in square brackets ("[]"). Adjacent elements are separated by the characters
", " (comma and space). Elements are converted to strings as by String.valueOf(Object).

Overrides:
    toString in class Object

Returns:
    a string representation of this collection

それはあなたが望むものではありませんか?

于 2013-04-18T13:15:31.893 に答える
1

意図は、リンクされたリストに保存されているすべての学生をリストすることであり、リンクされたリストを上書きすることではないようtoString()です。クラスがそのメソッドをStudentオーバーライドしている限り、あなたは道を進んでいます。toString()リンクされたリストを印刷すると、そのtoString()メソッドが呼び出され、必要なものが得られます。

toString() をオーバーライドするサンプル クラス

class MyClass 
{
    private int x;
    private int y;

    /* getters and setters  */

    @Override
    public String toString()
    {
        return "MyClass [x=" + x + ", y=" + y + "]";
    }
}

使用法

List<MyClass>  myList = new LinkedList<MyClass>();
MyClass myClass = new MyClass();
myClass.setX(1);
myClass.setY(2);
myList.add(myClass);
System.out.println(myList);

版画

[マイクラス [x=1, y=2]]

于 2013-04-18T13:18:50.687 に答える
0

StringBuilder を使用して、リストを循環するだけです。

public String toString(){
  StringBuilder sb = new StringBuilder();
  for (Student s: students){
    sb.append(s.toString()+",");
  }
  return sb.toString();
}

Student クラスの toString() メソッドに必要な情報を含めます。

編集: リンクされたリストの toString() が String.valueOf() を使用している他の応答の 1 つに気付きました。もちろん、null がこのリストでいつ終了するかを知りたい場合を除き、null を処理するため、ほとんどの場合、実際にはそれを好みます。

したがって、代わりに:

sb.append(s.toString()+",");

あなたが使用することができます:

sb.append(String.valueOf(s),"+");
于 2013-04-18T13:15:36.150 に答える
0

Registry クラスで toString() をオーバーライドする

LinkedList はメンバー オブジェクトの toString() を呼び出します

ソース

Returns a string representation of this collection. The string representation consists of a list of the collection's elements in the order they are returned by its iterator, enclosed in square brackets ("[]"). Adjacent elements are separated by the characters ", " (comma and space). Elements are converted to strings as by java.lang.String.valueOf(java.lang.Object).

于 2013-04-18T13:16:37.240 に答える
0
  1. リンク リスト クラスを作成したのではなく、LinkedListオブジェクトを作成しました。
  2. Registry必要なのは、クラスの toString() メソッドです

    public String toString() { ブール角括弧追加 = false; StringBuffer 結果 = 新しい StringBuffer();

    for(Student student : studentList) {
        result.append(bracketAdded ? ", " : "[");
        result.append(student);
        bracketAdded = true;
    }
    result.append("]");
    
    return result.toString();
    

    }

あとは、クラスのtoString()メソッドを実装するだけです。Student

于 2013-04-18T13:18:01.763 に答える