0

以下のコードを使用します。しかし、文字列ではなくオブジェクト形式で応答しています。どこが悪いのか教えて...

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

class Employee5 {

    String name;

    public String getName() {
        // TODO Auto-generated method stub
        return name.toString();
    }

    void setName(String nameOfEmp) {
        name = nameOfEmp;
    }

}

class EmpSortByName implements Comparator<Employee5> {
    public int compare(Employee5 o1, Employee5 o2) {
        return o1.getName().compareTo(o2.getName());
    }
}

public class ComparatorExampleInJava {
    @SuppressWarnings("unchecked")
    public static void main(String[] args) {
        Employee5 emp1 = new Employee5();
        emp1.setName("A");
        Employee5 emp2 = new Employee5();
        emp2.setName("C");
        Employee5 emp3 = new Employee5();
        emp3.setName("B");

        List lst = new ArrayList();
        lst.add(emp1);
        lst.add(emp2);
        lst.add(emp3);

        System.out.println("Before Sort : " + lst);

        try {
            Collections.sort(lst, new EmpSortByName());
        } catch (Exception e) {
            e.printStackTrace();
        }

        System.out.println("After Sort  : " + lst);

    }
}

出力の取得: ソート前: [Employee5@19821f, Employee5@addbf1, Employee5@42e816] ソート後: [Employee5@19821f, Employee5@42e816, Employee5@addbf1]

望ましい出力: ソート前: [A, C, B] ソート後: [A, B, C]

4

4 に答える 4

1

toString()名前を返す Employee5 で呼び出されるメソッドを実装する必要があります。

例( Employee5 に追加)

public String toString() {
    return name;
}

さらに読むために:JavaでtoStringメソッドを使用する方法は?

于 2013-08-07T08:00:32.423 に答える
0

それらを印刷する方法を指定するには、 Employee5 クラス内に独自の toString() 実装が必要なようです。

class Employee5 {
    ...

    @Override
    public String toString() {
      return name;
    }

}
于 2013-08-07T08:03:07.067 に答える
0

リストを印刷すると、リストの toString() メソッドが呼び出され、含まれているオブジェクトの toString() メソッドを呼び出して内容が印刷されます。Employee5 クラスの toString() メソッドをオーバーライドし、そこから名前を返す必要があります。

于 2013-08-07T08:03:42.173 に答える