【发布时间】:2015-09-29 03:27:10
【问题描述】:
我要写一个程序
- 使用ShopItem 类,其中一个项目的属性是:barCodeNumber、itemName、price 和quantityInStock。使用我自己的属性值创建 5 个 ShopItems 实例(item1、item2、item3、item4 和 item5)。
对 ShopItem 使用比较器 (barCodeComparator),它允许根据它们的 barCodeNumber 比较 ShopItem 对象(假设:没有两个项目永远不会有相同的 barCode)。
确保不能将具有相同 barCodeNumber 的两个项目添加到 Set。
我被困在第三部分。我知道我必须为此使用 HashSet,但我不知道如何在这个使用排序的程序中实现它。如果有任何不清楚的地方,我很抱歉,因为我在几个小时内进行了数据结构测试,所以我的时间不多了。
这是 shopItem.java 类
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;
}
}
这是 ShopItem_Order.java 类
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());
}
}
}
【问题讨论】:
标签: java data-structures treeset