java - 在java中对对象数组进行排序

标签 java

我正在尝试制作一个java应用程序,它允许用户为超市制作目录,然后根据用户输入的代码按升序显示用户输入到目录中的所有产品。I搜索过它并发现我可以使用一种名为“sort”的方法,但问题是我尝试实现它但它对我不起作用,而且我不知道将它放在我的代码中的哪里。

我编写的代码:2个类1类:

public class Catalog {

private String description ; 
private String code ;
private double price ;
private String phrase ;

int counter = 0;

private Catalog [] list = new Catalog [100];

public Catalog (String productDescription , String productCode , double    productPrice  , String productPhrase)
{
    description = productDescription;
    code = productCode;
    price = productPrice;
    phrase = productPhrase;
}

public void setDescription (String productDescription)
{
    description = productDescription;
}

public String getDescription ()
{
    return description;
}

public void setCode (String productCode)
{
    code = productCode;
}

public String getCode ()
{
    return code;
}

public void setPrice (double productPrice)
{
    price = productPrice;
 }

public double getPrice ()
{
    return price;
 }

public void setPhrase (String productPhrase)
{
    phrase = productPhrase;
}

public String getPhrase ()
{
    return phrase;
}

第 2 类:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class CatalogTest {
    public static void main(String[] args) throws IOException {
        String name = null;
        String code = null;
        double price = 0.0;
        String phrase = null;
        BufferedReader input = new BufferedReader (new InputStreamReader  (System.in));
        Catalog product = new Catalog(name,code,price,phrase);
        Catalog [] productsArray = new Catalog [100];

        for (int i = 0 ; i < productsArray.length ; i ++)
        {
            System.out.println("Enter product description (or # to stop): ");
            name = input.readLine();
            if (!("#".equals(name)))
            {
                productsArray [i] = product;
                product.setDescription(name);
                System.out.println("Enter product code: ");
                code = input.readLine();
                productsArray [i] = product;
                product.setCode(code);
                System.out.println("Enter product unit price: ");
                price = Double.parseDouble(input.readLine());
                productsArray [i] = product;
                product.setPrice(price);
                System.out.println("Enter product unit phrase: ");
                phrase = input.readLine();
                productsArray [i] = product;
                product.setPhrase(phrase);
                productsArray [i] = new Catalog (name,code,price,phrase);
            }
            else
            {
                System.out.println("Your Catalog:");
                for (int j = 0; j < productsArray.length; j++)
                {
                    if(productsArray[j]!=null)
                    {
                        System.out.printf("%s, %s,$%.2f %s,",
                        productsArray[j].getCode(),
                        productsArray[j].getDescription(),
                        productsArray[j].getPrice(),
                        productsArray[j].getPhrase());
                        System.out.println();
                    }
                }
                break;
            }
        }
    }
}

请问有什么帮助吗?

最佳答案

您可以编写自己的比较器,然后调用 Arrays.sort 方法:

public static class MyComparator implements Comparator<Catalog> {
    @Override
    public int compare( Catalog first, Catalog second ) {
        return first.getCode().compareTo( second.getCode() );
    }        
}

Arrays.sort( productsArray, new MyComparator() );

关于java - 在java中对对象数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14716900/

相关文章:

java - 在不违反 SOLID 原则的情况下使用具有不同方法名称的子类

java - “java”插件与 Android 插件不兼容

java - 在 CN1 上获取没有时间的当前日期

java - java中动态创建方法

java - 如何截取图像 (.png) 的一部分并将其作为纹理存储在 libGDX 中

java - 在不同包的子类中使用 super() 作为 equals()

java - jsp中的相对路径

java - 在 JTable Netbeans 中插入单选按钮

java - 如何在PLAY框架中导入JAVA自定义包

javah not found 错误在 jdk1.6 但在 jdk1.7 上没有