Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按升序排序向量并保存到文本文件_Java_Sorting_Text_Vector_Save - Fatal编程技术网

Java 按升序排序向量并保存到文本文件

Java 按升序排序向量并保存到文本文件,java,sorting,text,vector,save,Java,Sorting,Text,Vector,Save,我有一个向量,需要按升序排序,因为我还是一个初学者,我觉得这有点难,我一直在尝试使用insertElementAt和compareTo,但我没有成功。有人能帮忙吗?您应该根据对向量排序的内容来确定标准。你不能只比较两个对象,你应该选择一个“价格”或“代码”等,然后根据该值比较对象你可以采取两种方法: 使您的产品类实现该接口。这样,您就可以实现作为排序操作基础的方法。此方法定义排序,因为它通过返回正的int、零或负的int来确定哪个元素较高,哪个元素较低 实现你自己的。比较器定义了一种比较方法,该

我有一个向量,需要按升序排序,因为我还是一个初学者,我觉得这有点难,我一直在尝试使用insertElementAt和compareTo,但我没有成功。有人能帮忙吗?

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

你可以采取两种方法:

  • 使您的
    产品
    类实现该接口。这样,您就可以实现作为排序操作基础的方法。此方法定义排序,因为它通过返回正的
    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
    for
    String
    s(已经实现)比较值,或者如果使用price作为订购因子,则简单地减去价格(它们是Double,不是wrapper,除非您使用wrapper
    Double
    您没有
    compareTo
    方法).我仍然无法理解代码,是否有可能帮助我解决代码问题,或者这违反了论坛的规则?但是输出没有按照此代码的升序排序。或者我还需要添加更多内容?@user1965046:查看我编辑的答案。.要对
    向量进行排序,需要调用
    Collections.sort(VectorObject)
    显式..这是您在代码中没有完成的。