-1

昇順で並べ替える必要のあるベクターがあります。これはまだ初心者で、この作業を行うのが少し難しいと感じているため、insertElementAtとcompareToでそれを実行しようとしましたが、管理できませんでした。誰か助けてもらえますか?

4

3 に答える 3

0

Productクラスを。に従ってソート可能にするためcodeComparableProductクラスへのインターフェイスを実装し、compareToメソッドをオーバーライドできます。そのProduct場合、クラスは次のようになります。

import java.util.*;
class Product implements Comparable<Product>
{
    String desc, code, phrase;
    double price;

    public Product()
    {
        this.desc = "";
        this.code = ""; // later on irid jinbidel
        this. price = 0.0; 
        this.phrase = "";   
    }
    public Product(String desc, String code, String phrase, double price){
        this.desc = desc;
        this.code = code; // later on irid jinbidel
        this. price = price; 
        this.phrase = phrase;
    }
    @Override
    public String toString(){
        return code;//+", "+desc+", "+price+", "+phrase+".";

    }
    @Override
    public int compareTo(final Product obj) {
        return code.compareTo(obj.code);
    }
}

正しく並べ替えられているかどうかをテストするには、次の簡単なデモをご覧ください。

public class TestProduct
{
    public static void main(String[] st)
    {
        Vector<Product> v = new Vector<Product>();
        for (int i = 9 ; i > 0 ; i-- )
        {
            v.add(new Product("MyProduct",i+"Product","Good Product",34.5));
        }
        System.out.println("Before sorting");//Records inserted in decreasing order of code.
        System.out.println(v);
        Collections.sort(v);
        System.out.println("After sorting");//Records showing in increasing order of code.
        System.out.println(v);
    }
}
于 2013-03-13T18:54:41.443 に答える
0

あなたが取ることができる2つのアプローチがあります:

  1. クラスProductにインターフェースを実装させComparableます。compareToこのようにして、ソート操作のベースとなるメソッドを実装できます。このメソッドは、正、ゼロ、または負を返すことによって、どの要素が高く、どの要素が低いかを決定するため、順序付けを定義します。intint

  2. 独自のを実装しますComparator。コンパレータは、2つの要素をベースとして、同じ方法でそれらを比較する比較方法を定義compareToします。ここでの利点は、別ので注文することで注文基準を切り替えることができることですComparator

最後に、ソートはCollections#sort、コレクションを引数として使用するオーバーロードのいずれかを使用して実行できます。また、使用する場合はaComparatorを使用します。

于 2013-03-13T17:58:46.840 に答える
0

ベクターをソートする内容に基づいて基準を決定する必要があります。2 つのオブジェクトを単純に比較することはできません。「価格」または「コード」などを選択し、その値に基づいてオブジェクトを比較する必要があります。

于 2013-03-13T17:56:18.780 に答える