我有一个需要按升序排序的向量,因为我仍然是一个初学者,我发现要完成这项工作有点困难,我一直在尝试使用 insertElementAt 和 compareTo 来完成它,但我没有做到。任何人都可以帮忙吗?
问问题
898 次
3 回答
0
您应该根据您对向量进行排序的内容来决定一个标准。您不能只比较两个对象,您应该选择“价格”或“代码”等,并根据该值比较您的对象
于 2013-03-13T17:56:18.780 回答
0
您可以采取两种方法:
让你的
Product
类实现Comparable
接口。这样,您可以实现compareTo
作为排序操作基础的方法。此方法定义了排序,因为它通过返回正、零或负来确定哪个元素更高,哪个更低。int
int
实现您自己的
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 回答