当前位置: 首页 > 知识库问答 >
问题:

如何对数组列表整数类型 [重复] 进行排序

冯野
2023-03-14

我有一个对象类产品,如下所示

public class Product {
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    String name;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getImage() {
        return image;
    }

    public void setImage(String image) {
        this.image = image;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    int price;
    String id;
    String image;
}

我想根据价格对产品进行分类。我的数组是

 List<Product> products=new ArrayList<>();

 for(int i=0;i<ja3.length();i++){
     JSONObject jsonObject=ja3.getJSONObject(i);
     Product product=new Product();
     product.setId(jsonObject.getString("product_id"));
     product.setImage("http://ezybzy.com/images/"+jsonObject.getString("product_id")+"/1.jpg");
     product.setPrice(jsonObject.getInt("product_SP"));
     product.setName(jsonObject.getString("product_name"));
     products.add(product)
 }

我做了

Collections.sort(products, new Comparator<Product>() {
    @Override
    public int compare(Product lhs, Product rhs) {
        return lhs.getPrice().compareTo(rhs.getPrice());
    }
})

但问题是. compareTo(rhs.getPrice()部分在error.It不能使用compareTo方法。我希望我的arrayList按照product.The价格的整数排序value.But当我将其更改为字符串类型时,我得到了CompareTo,但它仍然未排序,因为字符串type.Please帮助我

共有3个答案

朱梓
2023-03-14

您可以在Model类中实现Comparable,如下所示-

public class Product implements Comparable<Product> {
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    String name;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getImage() {
        return image;
    }

    public void setImage(String image) {
        this.image = image;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    int price;
    String id;
    String image;

    @Override
    public int compareTo(Product another) {
        return getPrice() - another.getPrice();
    }
}

当你使用排序时,你只能使用排序功能

Collections.sort(products);
韦智刚
2023-03-14

这是您可以从比较函数返回的三个值

  • 0
  • 阳性例如1
  • 负例如-1

正值表示第一个对象(在这种情况下为p1)大于第二个对象(在此情况下为p2),反之亦然。0表示对象相等

因此,对于升序,您可以覆盖比较

Collections.sort(products, new Comparator< Product >() {
    @Override public int compare(Product p1, Product p2) {
        return p1.getPrice()- p2.getPrice(); // Ascending
    }
});

对于降序

Collections.sort(products, new Comparator< Product >() {
    @Override public int compare(Product p1, Product p2) {
        return p2.getPrice()- p1.getPrice(); // Descending
    }
});
乌骏
2023-03-14
Collections.sort(products, new Comparator< Product >() {
    @Override public int compare(Product p1, Product p2) {
        return p1.getPrice()- p2.getPrice(); // Ascending
    }
});

请注意,这是整数之间的比较,因此不需要将其更改为字符串

 类似资料:
  • 问题内容: 我想对整数的arraylist的arraylist进行排序,需要帮助吗? 我被告知,我需要实现比较器或可比对象,然后使用collection.sort对列表列表进行排序… 问题答案: 没有错误检查空列表,但是这里是。 使用Java 8,它变得更加简洁:

  • 正如我的问题所描述的,如何在java中对类型数组的列表进行排序? 这是我的ListClass 这是我的驾驶程序 现在,我希望在ListClass中有一个通用排序方法,可以对通过驱动程序生成的任何类型的列表(字符串、整数、双精度、浮点等)进行排序。

  • 我有一个包含下一个数据的ArrayList:(int)、(int)、(int)、(String)。我按字段对此数组进行排序。如果长度与提交的相等,我如何赋予优先级(优先级将具有具有水平位置的长度)。例如,给定输入: 输出应为: 以下是我所拥有的:

  • 但我得到一条错误消息,说无法在原语类型int上调用compareToIgnoreCase(int) 我如何修复这段代码,使它能够用整数值对列表进行排序?

  • 问题内容: 这个问题已经在这里有了答案 : 如何根据对象的属性对对象列表进行排序? (8个答案) 1年前关闭。 我有一个看起来像这样的对象列表。 Card(10,’H)在这里不是元组,而是对象。我知道如果列表中的每个项目都是元组形式的,如何对列表进行排序,就像这样, 但我不知道如何对对象列表进行排序。我想按第一个输入值(即Card()中的数字)对列表进行排序 我怎样才能做到这一点? 编辑:这是Ca

  • 我有一个小问题,希望你能帮我解决。 我有一个名为Entity的类,它有几个属性,其中两个属性是id和实用程序: 然后,我在ArrayList中有几个Entity对象,如下所示: 现在,我想根据公用事业实体对列表进行排序。我使用一个定制的比较器,尝试了几种类似我在这里读到的解决方案: 但是在这条线上: 我遇到了以下错误:int不能被解引用,我不知道如何修复它。你们能帮我解决这个问题或者给出另一个解决