0

クラスの配列がありCustomerます。Customerと呼ばれるフィールドに基づいて、Classの配列内の要素をアルファベット順に並べ替えたいと思いnameます。

これが私が使用しているコードです:

int j;
        boolean flag = true;  // will determine when the sort is finished
        Customer temp;
        while ( flag )
        {
            flag = false;
            for ( j = 0;  j < count_customers;  j++ )
            {

                if ( customers[ j ].getName().toString().compareToIgnoreCase( customers[ j + 1 ].getName().toString() ) > 0 )
                {
                    temp = customers[ j ];
                    customers[ j ] = customers[ j+1 ];     // swapping
                    customers[ j+1 ] = temp; 
                    flag = true;
                 } 
             } 
         } 

customers[]保持する配列は、Customer count_customersアクティブな顧客の数を表します。何らかの理由で、以下のコードを実行しても何も返されません。

        for(int i=0; i < count_customers; i++)
        {
            tmp_results += customers[ i ].toString() + "\n";
        }

.toString()Customerクラスで定義され、顧客に関するすべてを出力するだけです。

だから私は何が間違っているのですか?

4

1 に答える 1

5

新しいクラスを作成し、使用してCustomerComparator並べ替えますCustomer[]Arrays.sort(array, new CustomerComparator());

public class CustomerComparator implements Comparator<Customer> {

    @Override
    public int compare(Customer c1, Customer c2) {
        return c1.getName().compareTo(c2.getName());
    }

}
于 2013-03-25T22:38:40.110 に答える