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

Java-使用比较器进行树集排序

池永长
2023-03-14

我必须写一个程序

>

  • 使用一个类ShopItem,其中一个项目的属性是:barCodeNumber、itemName、price和QuantityInStock。创建5个ShopItems实例(item1、item2、item3、item4和item5)的属性值为我自己的值。
  • 为ShopItem使用一个比较器(BarcodeParator),它允许基于它们的barCodeNumber对ShopItem对象进行比较(假设:没有两个项目永远不会有相同的条形码)。

    public class ShopItem implements Comparable<ShopItem> {
    
    private int barCodeNumber;
    private String itemName;
    private int price;
    private int quantityInStock;
    
    public ShopItem(int barCodeNumber, String itemName, int price, int quantityInStock){
    
        this.barCodeNumber= barCodeNumber;
        this.itemName= itemName;
        this.price= price;
        this.quantityInStock= quantityInStock;
    }
    
    
    public int getBarCodeNumber() {
        return barCodeNumber;
    }
    
    
    public void setBarCodeNumber(int barCodeNumber) {
        this.barCodeNumber = barCodeNumber;
    }
    
    
    public String getItemName() {
        return itemName;
    }
    
    
    public void setItemName(String itemName) {
        this.itemName = itemName;
    }
    
    
    public int getPrice() {
        return price;
    }
    
    
    public void setPrice(int price) {
        this.price = price;
    }
    
    
    public int getQuantityInStock() {
        return quantityInStock;
    }
    
    
    public void setQuantityInStock(int quantityInStock) {
        this.quantityInStock = quantityInStock;
    }
    
    @Override
    public String toString(){
        return "Item: " + itemName+ ":"+ "Bar Code Reader: "+barCodeNumber;
       }
    
    }
    
    import java.util.*;
    
    public class ShopItem_Order {
    final static Comparator<ShopItem> BarCodeComparator= new Comparator<ShopItem>(){
    
        public int compare(ShopItem A, ShopItem B){
    
            if(new Integer(A.getBarCodeNumber()).compareTo(new Integer(B.getBarCodeNumber()))<0)
    
                return -1;
    
                else if(new Integer(A.getBarCodeNumber()).compareTo(new Integer(B.getBarCodeNumber()))>0)
    
                   return 1;
    
                else
                    return 0;
    
       }
    
    };
    
    
    
        public static void main(String args[]){
    
            SortedSet<ShopItem> item= new TreeSet<ShopItem>(new ShopItem_Comparator());
    
            ShopItem a= new ShopItem(42842, "Iced Green Tea", 75, 20);
            ShopItem b= new ShopItem(42278, "Sugar Free Lindt Choc", 175, 20);
            ShopItem c= new ShopItem(42277, "Red Velvet Cake", 125, 15);
            ShopItem d= new ShopItem(42857, "Financier Cake", 150, 11);
            ShopItem e= new ShopItem(48423, "Tacos", 125, 10);
    
    
            item.add(a);
            item.add(b);
            item.add(c);
            item.add(d);
            item.add(e);
    
            for(ShopItem si: item){
                System.out.println(si.toString());
            }
    
    
    
        }
    

    }

  • 共有1个答案

    慕弘深
    2023-03-14

    由于条形码是唯一的标准,所以可以使用它进行哈希代码计算。例如。返回新的整数(barCodeNumber).HashCode()。请注意,您还需要实现equals()方法,该方法也将基于BarCodeNumber。

     类似资料:
    • 所以我正在使用一些预先存在的比较器,它们比较两个元组中的某些值,如果第一个大于第二个,则返回true,否则返回false。这是其中之一的代码: 现在,我有一个字典,里面有许多上面比较的类型的元组条目。我想以相反的顺序对它们进行排序,但我真的不知道如何完成。我在想这样的事情: 但是我不知道向比较器传递什么,因为每个比较器都有两个参数(subInfo1、subInfo2)。我不能更改比较器函数。

    • 我有一个用类填充的树集。我想让这些按其继承排序,否则,只按其名称的字母顺序(以创建一个恒定的顺序)。但是由于某种原因,如果添加的类的顺序不正确,就会导致类的顺序不正确。 这是我的比较器: 下面是一个测试失败的例子: 排序集的实际值: 我的期望更像是: 我在调试时确实注意到,并非每个项目都相互比较。

    • 问题内容: 父级是子级继承的类。由GrandChild继承。每个类都包含子类的列表(即,父类包含子类的列表,子类包含大子级的列表)。每个类包含50个属性(attrib1-atrib50)。getChildList()返回类型为Child的对象的arrayList getGrandChildList()返回类型为GrandChild的对象的arrayList 令resultSet为父级列表 现在,我

    • 我一直在做拼字游戏作业。我需要从列表中读取单词,然后读取每个字符并赋值,最终为每个单词分配一个总分。已经完成了!唷。现在我需要使用比较器将单词从最高分到最低分进行排序。读了很多,还是很迷茫。我知道我可以使用接口,但也有使用lambda表达式的比较器,这是我想去的方向。我只是不知道该怎么做。我需要比较每个单词的sumValue,然后按降序打印单词。 我创建了 2 个循环来读取单词 (i),然后是字符

    • 我正试图根据员工的加入日期对他们的列表进行排序。下面是我的员工类。 下面是我的比较器类:

    • 问题内容: 说,我们有以下二维数组: 应该如何声明Java 类以使用降序按数组的第一个元素对数组进行排序?供参考的功能是: 问题答案: […]应该如何声明Java Comparator类以按其降序将数组的第一个元素排序 […] 这是使用Java 8的完整示例: 输出: 对于Java 7,你可以执行以下操作: 如果你不幸无法在Java 6或更早版本上运行,请执行以下操作: