Java 按升序排序向量并保存到文本文件
我有一个向量,需要按升序排序,因为我还是一个初学者,我觉得这有点难,我一直在尝试使用insertElementAt和compareTo,但我没有成功。有人能帮忙吗?您应该根据对向量排序的内容来确定标准。你不能只比较两个对象,你应该选择一个“价格”或“代码”等,然后根据该值比较对象你可以采取两种方法:Java 按升序排序向量并保存到文本文件,java,sorting,text,vector,save,Java,Sorting,Text,Vector,Save,我有一个向量,需要按升序排序,因为我还是一个初学者,我觉得这有点难,我一直在尝试使用insertElementAt和compareTo,但我没有成功。有人能帮忙吗?您应该根据对向量排序的内容来确定标准。你不能只比较两个对象,你应该选择一个“价格”或“代码”等,然后根据该值比较对象你可以采取两种方法: 使您的产品类实现该接口。这样,您就可以实现作为排序操作基础的方法。此方法定义排序,因为它通过返回正的int、零或负的int来确定哪个元素较高,哪个元素较低 实现你自己的。比较器定义了一种比较方法,该
产品类实现该接口。这样,您就可以实现作为排序操作基础的方法。此方法定义排序,因为它通过返回正的int
、零或负的int
来确定哪个元素较高,哪个元素较低
compareTo
相同的方式对它们进行比较。这里的优点是,您可以通过使用不同的比较器进行排序来切换排序条件
最后,排序可以通过使用
集合#sort
的任何重载来执行,该重载将集合作为参数和比较器(如果您决定使用比较器)。使产品类可以根据code
进行排序。您可以实现产品类的Comparable
接口,并重写compareTo
方法。您的产品
类将如下所示:
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);
}
}
import java.util.*;
类产品实现了可比较的
{
字符串描述、代码、短语;
双倍价格;
公共产品()
{
this.desc=“”;
this.code=”“;//稍后将介绍irid jinbidel
这个价格=0.0;
这个短语为“”;
}
公共产品(字符串描述、字符串代码、字符串短语、双倍价格){
this.desc=desc;
this.code=code;//稍后是irid jinbidel
这个。价格=价格;
这个短语=短语;
}
@凌驾
公共字符串toString(){
返回代码;//+”、“+desc+”、“+price+”、“+phrase+”;
}
@凌驾
公共内部比较(最终产品obj){
返回代码。比较(对象代码);
}
}
要测试它是否正确排序,这里有一个简单的演示:
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);
}
}
公共类测试产品
{
公共静态void main(字符串[]st)
{
向量v=新向量();
对于(int i=9;i>0;i--)
{
v、 增加(新产品(“我的产品”,i+“产品”,“好产品”,34.5));
}
System.out.println(“排序前”);//按代码降序插入的记录。
系统输出打印Ln(v);
收集.分类(五);
System.out.println(“排序后”);//记录以代码的递增顺序显示。
系统输出打印Ln(v);
}
}
欢迎来到StackOverflow!你的帖子里没有足够的信息。首先,您还没有展示您尝试实现的排序算法。第二,你还没有说你想在Product
中按哪个字段排序(产品代码、单价、短语?)。总而言之,在我们提供帮助之前,我们需要您付出更多的努力。:)提示:Collections.sort()&Comparatori已经尝试过Collections.sort,但是因为我以前从未使用过它,所以我想不出如何实现它。您真的对使用向量
感兴趣吗?它在Java中已经过时了。Vector被认为是一个遗留类-。是的,因为我的作业要求我使用向量而不是数组。是的,我知道,但我不知道如何实现它。我仍然不知道如何使用compareTo方法,我知道我需要比较i和i+1,如果i+1较小,它将替换i。@user1965046这就是重点。你实现它,但你自己不使用它Collections.sort
将基于它或在比较器中实现它的排序算法,如果您决定实现一个。我整天都在看示例,我理解它是如何工作的,只是不知道如何编码。@user1965046实现接口(公共类产品实现Comparable
)然后重写compareTo
方法。然后,定义订购标准(desc、code、PHASE或price),并使用compareTo
forString
s(已经实现)比较值,或者如果使用price作为订购因子,则简单地减去价格(它们是Double,不是wrapper,除非您使用wrapperDouble
您没有compareTo
方法).我仍然无法理解代码,是否有可能帮助我解决代码问题,或者这违反了论坛的规则?但是输出没有按照此代码的升序排序。或者我还需要添加更多内容?@user1965046:查看我编辑的答案。.要对向量进行排序,需要调用Collections.sort(VectorObject)
显式..这是您在代码中没有完成的。