1

次のプログラムの出力は、私が期待していたものではありません。このプログラムの何が問題なのですか? 提案してください。

[Hello11​​3、Hello380、Hello293、Hello290、Hello246、Hello456、Hello797、Hello888、Hello981]

編集:私はこの方法でのみこれをやりたかった。collections.sort() を使用していません。

   public class Sample {

    public static void main(String[] args) {
        Random random = new Random(10);

        List<Employee> employees = new ArrayList<Employee>();
        for (int i=0;i<10;i++)
        {
            Employee e = new Employee(i,"Hello"+random.nextInt(1000));
            employees.add(e);
        }
        System.out.println(employees);
    }

    }

    class Employee implements Comparable<Employee>
    {
    private int empNo;
    private String empName;

    public int getEmpNo() {
        return empNo;
    }
    public void setEmpNo(int empNo) {
        this.empNo = empNo;
    }
    public String getEmpName() {
        return empName;
    }
    public void setEmpName(String empName) {
        this.empName = empName;
    }

    Employee(int empNo,String empName)
    {
        this.empName=empName;
        this.empNo=empNo;
    }

    @Override
    public String toString() {

        return empName+" \n";
    }

    @Override
    public int compareTo(Employee o) {

        return this.getEmpName().compareTo(o.getEmpName());
    }

}

4

5 に答える 5

1

は、要素を追加したときの要素のArrayList順序を保持します。それらを並べ替えたい場合は、compareTo実装した を使用する並べ替えメソッドを作成するか、単に を呼び出す必要がありますCollections.sort(employees)

独自のソート アルゴリズムの実装を使用することをお勧めします。insertion sortorを使用しようとするquicksortと、既に実装されているもの (Collections.sort など) を使用しないことを最大限に活用できます。

TreeSetまた、コレクションを自動的にソートするために使用することもできますが、Set重複はありません。

于 2013-09-20T08:39:17.837 に答える
0

あなたはそれらを並べ替えるのを忘れました

Collections.sort(employees);
System.out.println(employees);

メソッドは、オブジェクトをソートするメソッドCollections.sort()で暗黙的に機能します。compareToEmployee

コレクションArrayListは順序付けされたコレクションであり、ソートされていません。したがって、明示的にソートする必要があります

を使用せずに並べ替えたい場合Collections.sortは、 を作成しTreeSetて要素を追加し、次に変換するTreeSet必要があります。ArrayList

Set<Employee> employeeSet = new TreeSet<Employee>(employees);
List<Employee> sortedList = new ArrayList<Employee>();
sortedList.addAll(employeeSet);
于 2013-09-20T08:37:40.847 に答える
0

Collections.sort を使用して ArrayList をソートするか、挿入中にソートする ArrayList の代わりに TreeSet を使用します。

于 2013-09-20T08:39:11.930 に答える
0

Set<Employee> employees = new TreeSet<Employee>();の代わりに 使用しList<Employee> employees = new ArrayList<Employee>()ます。

于 2013-09-20T08:43:14.717 に答える