-1

我有一个需要按升序排序的向量,因为我仍然是一个初学者,我发现要完成这项工作有点困难,我一直在尝试使用 insertElementAt 和 compareTo 来完成它,但我没有做到。任何人都可以帮忙吗?

4

3 回答 3

0

您应该根据您对向量进行排序的内容来决定一个标准。您不能只比较两个对象,您应该选择“价格”或“代码”等,并根据该值比较您的对象

于 2013-03-13T17:56:18.780 回答
0

您可以采取两种方法:

  1. 让你的Product类实现Comparable接口。这样,您可以实现compareTo作为排序操作基础的方法。此方法定义了排序,因为它通过返回正、零或负来确定哪个元素更高,哪个更低intint

  2. 实现您自己的Comparator. 比较器定义了一个比较方法,它以两个元素为基础,并以相同的方式比较它们compareTo。这里的优点是您可以通过使用不同的Comparator.

最后,可以通过使用任何Collections#sort将您的集合作为参数以及Comparator如果您决定使用一个参数的重载来执行排序。

于 2013-03-13T17:58:46.840 回答
0

使产品类可根据code. 您可以实现Comparable产品类的接口并覆盖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 回答