【发布时间】:2014-12-28 21:38:59
【问题描述】:
我正在尝试修改“添加”方法,以便检查 BinItem 的 SKU 是否相同。如果它是独一无二的,我会添加它。如果它的 SKU 与其他 SKU 相似,它将删除 BinItem,创建一个新的(相同 SKU)但汇总数量。
我尽了最大的努力,但无法理解它......这是我的努力。我尝试制作一个嵌套的 for 循环,以便遍历每个循环,检查它们是否相同,如果它们相同则删除。它最终删除了所有内容。
public class Bin
{
private String myName;
private ArrayList<BinItem> myContents;
public Bin ( String name )
{
myName = name;
myContents = new ArrayList <BinItem>();
}
public ArrayList <BinItem> getContents()
{
return myContents;
}
public String getName()
{
return myName;
}
// Define the remove and totalQuantity methods and redefine the add method here
public void remove (int b)
{
myContents.remove(b);
}
public int totalQuantity()
{
int x = 0;
for (int i = 0; i< myContents.size(); i++)
{
x += myContents.get(i).getQuantity();
}
return x;
}
public void add (BinItem b)
{
for (int i = 0; i < myContents.size(); i++)
{
for (int x = 0; x < myContents.size(); x++)
{
if (!(myContents.get(i).getSKU().equals(myContents.get(x).getSKU())))
myContents.add(b);
else
myContents.remove(b);
}
}
}
public String toString()
{
String s = "Bin " + myName + ":\n";
for ( BinItem b : myContents )
s += b + "\n";
return s;
}
}
这是 BinItem 类
public class BinItem
{
private String mySKU;
private int myQuantity;
public BinItem ( String sku, int quantity)
{
mySKU = sku;
myQuantity = quantity;
}
public String getSKU()
{
return mySKU;
}
public int getQuantity()
{
return myQuantity;
}
public String toString()
{
return "SKU " + getSKU() + ": " + getQuantity();
}
}
这是主类
public static void main( String[] args )
{
Bin bin = new Bin( "A" );
bin.add( new BinItem( "1234-0", 500 ) );
bin.add( new BinItem( "1234-1", 25 ) );
bin.add( new BinItem( "1234-0", 243 ) );
bin.add( new BinItem( "1234-2", 7720 ) );
bin.add( new BinItem( "1234-0", 871 ) );
System.out.println( bin );
}
我正在努力让它返回
Bin A:
SKU 1234-1: 25
SKU 1234-2: 7720
SKU 1234-0: 1614
【问题讨论】:
-
您应该只需要遍历列表一次,如果找到它就中断循环。 然后如果你有一个找到的参考增加计数。
-
为什么要删除旧条目而不只是总结数量?列表中的位置是否起作用?
-
如果不需要排队的位置,则使用 HashMap 比 List 搜索更好,否则使用 TreeMap。