首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对对象数组列表中的整数进行排序

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

Stack Overflow用户
提问于 2013-06-05 16:05:34
回答 5查看 183关注 0票数 1

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

首先,我手动填充Arraylist:

代码语言:javascript
运行
复制
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);
}

后来,我尝试了这个

代码语言:javascript
运行
复制
//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不能被推迟“。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-06-05 16:09:04

你需要像这样在你的比较器中做比较:

代码语言:javascript
运行
复制
Collections.sort(artOrdenado, new Comparator<Articulo>(){
    public int compare(Articulo uno, Articulo otro){
        return (uno.getPrecio() - otro.getPrecio());
    }

});

或使用Integer.compare()

票数 4
EN

Stack Overflow用户

发布于 2013-06-05 16:08:47

我猜getPrecio()会返回int (一个原语)。你不能在原语上调用方法(它们不是对象)。但是,您可以在对象上调用方法,如果getPrecio()返回一个Integer (int的对象副本),那么您应该会获得更多成功(请参阅here以了解有关这方面的更多信息,称为装箱)。

或者,您可以在compare()方法中直接比较int(例如,如果int< price2,则返回-1等)。

票数 0
EN

Stack Overflow用户

发布于 2013-06-05 16:11:37

尝试使用

代码语言:javascript
运行
复制
return uno.getPrecio-otro.getPrecio();

我希望getPrecio返回价格值

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16934613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档