Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.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_Arraylist_Integer - Fatal编程技术网

Java 对对象数组列表中的整数进行排序

Java 对对象数组列表中的整数进行排序,java,sorting,arraylist,integer,Java,Sorting,Arraylist,Integer,我从Java开始,我的问题是我有一个对象的Arraylist(“Articulos”,意思是文章),这个对象有属性(比如名称、价格等等)。我想按每个对象的价格对Arraylist进行排序。这是我试过的 首先,我手动填充Arraylist: public static void Introducir_Articulo(){ Articulo a=new Articulo(); System.out.println("Codigo del articulo: "+(art.size

我从Java开始,我的问题是我有一个对象的Arraylist(“Articulos”,意思是文章),这个对象有属性(比如名称、价格等等)。我想按每个对象的价格对Arraylist进行排序。这是我试过的

首先,我手动填充Arraylist:

public static void Introducir_Articulo(){
    Articulo a=new Articulo();

    System.out.println("Codigo del articulo: "+(art.size()+1));
    if(a.codArt==0){
        a.codArt++;
    } else {
        a.codArt+=art.size();
    }
    System.out.println("Nombre del articulo: ");
    a.NombreArt=sc.next();

    System.out.println("Precio del articulo: ");
    a.precio=sc.nextInt();

    System.out.println("IVA del articulo: ");
    a.iva=sc.nextInt();

    art.add(a);
}
后来,我试过这个

//copying the arraylist, so I don't have to change the original
artOrdenado=new ArrayList<Articulo>(art);
System.out.println(artOrdenado);

Collections.sort(artOrdenado, new Comparator<Articulo>(){
    public int compare(Articulo uno, Articulo otro){
       return uno.getPrecio().compareTo(otro.getPrecio());
    }
});
//复制arraylist,这样我就不必更改原始
artOrdenado=新ArrayList(艺术);
系统输出打印LN(artOrdenado);
Collections.sort(artOrdenado,newcomparator(){
公共整数比较(Articulo uno、Articulo otro){
返回uno.getPrecio().compareTo(otro.getPrecio());
}
});

但是它抛出了一个异常,表示“int不能被延迟”。

我猜
getPrecio()
返回
int
(一个原语)。不能对原语(它们不是对象)调用方法。但是,您可以对对象调用方法,如果
getPrecio()
返回一个(与
int
相对应的对象),那么您应该会取得更大的成功(有关Java这一方面的更多信息,请参阅boxing)


或者,您可以在
compare()
方法中直接比较int(例如,如果price1我猜
getPrecio()
返回
int
(原语)。不能对原语(它们不是对象)调用方法。但是,您可以对对象调用方法,如果
getPrecio()
返回一个(与
int
相对应的对象),那么您应该会取得更大的成功(有关Java这一方面的更多信息,请参阅boxing)


或者,您可以在
compare()
方法中直接比较整数(例如,如果price1您需要在比较器中进行如下比较:

Collections.sort(artOrdenado, new Comparator<Articulo>(){
    public int compare(Articulo uno, Articulo otro){
        return (uno.getPrecio() - otro.getPrecio());
    }

});

Collections.sort(artOrdenado,新比较器;

您需要在比较器中执行以下比较:

Collections.sort(artOrdenado, new Comparator<Articulo>(){
    public int compare(Articulo uno, Articulo otro){
        return (uno.getPrecio() - otro.getPrecio());
    }

});
Collections.sort(artOrdenado,新的比较器;

尝试使用

return uno.getPrecio-otro.getPrecio();
我希望getPrecio返回价格值

尝试使用

return uno.getPrecio-otro.getPrecio();

我希望getPrecio返回价格值

getPrecio()
的返回值的类型是什么?您在这个类中定义了
compareTo()
的行为了吗?如果您键入的是
int
使用普通运算符
getPrecio()的返回值的类型是什么
?您是否在此类中定义了
compareTo()
的行为?如果键入的是
int
请使用普通运算符
请使用此方法进行比较

public int compare(Articulo uno, Articulo otro)
{
    int comparation= (uno.getPrecio()> otro.getPrecio()) ? 1 : 0;
    if(comparation== 0)
    {
       comparation= (uno.getPrecio()== otro.getPrecio()) ? 0 : -1;
    }

return comparation;
}

使用此方法进行比较

public int compare(Articulo uno, Articulo otro)
{
    int comparation= (uno.getPrecio()> otro.getPrecio()) ? 1 : 0;
    if(comparation== 0)
    {
       comparation= (uno.getPrecio()== otro.getPrecio()) ? 0 : -1;
    }

return comparation;
}