昇順で並べ替える必要のあるベクターがあります。これはまだ初心者で、この作業を行うのが少し難しいと感じているため、insertElementAtとcompareToでそれを実行しようとしましたが、管理できませんでした。誰か助けてもらえますか?
3 に答える
Productクラスを。に従ってソート可能にするためcode
。Comparable
Productクラスへのインターフェイスを実装し、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);
}
}
あなたが取ることができる2つのアプローチがあります:
クラス
Product
にインターフェースを実装させComparable
ます。compareTo
このようにして、ソート操作のベースとなるメソッドを実装できます。このメソッドは、正、ゼロ、または負を返すことによって、どの要素が高く、どの要素が低いかを決定するため、順序付けを定義します。int
int
独自のを実装します
Comparator
。コンパレータは、2つの要素をベースとして、同じ方法でそれらを比較する比較方法を定義compareTo
します。ここでの利点は、別ので注文することで注文基準を切り替えることができることですComparator
。
最後に、ソートはCollections#sort
、コレクションを引数として使用するオーバーロードのいずれかを使用して実行できます。また、使用する場合はaComparator
を使用します。
ベクターをソートする内容に基づいて基準を決定する必要があります。2 つのオブジェクトを単純に比較することはできません。「価格」または「コード」などを選択し、その値に基づいてオブジェクトを比較する必要があります。