我从Java开始,我的问题是我有一个对象的Arraylist(“ Articulos”,意味着Articles),并且该对象具有属性(如名称,价格等)。我想按每个对象的价格对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());
}
});
但它会抛出一个异常,指出“不能引用int”。
最佳答案
您需要像这样在比较器中进行比较:
Collections.sort(artOrdenado, new Comparator<Articulo>(){
public int compare(Articulo uno, Articulo otro){
return (uno.getPrecio() - otro.getPrecio());
}
});
或使用Integer.compare();