是否有使用哈希表的替代方法? 我有这个代码,并想知道我是否可以不使用它。我的工作是找到的,但有人告诉我不要使用它。任何帮助表示赞赏。
import java.util.Hashtable;
import java.util.Enumeration;
public class Cart
{
public Hashtable items = new Hashtable();
public Enumeration getEnumeration()
{
return items.elements();
}
public void addItem(String itemId,String desc, float price, int quantity)
{
String[] item = {itemId, desc, Float.toString(price),
Integer.toString(quantity)};
if (items.containsKey(itemId))
{
String[] tmpItem = (String[])items.get(itemId);
int tmpQuant = Integer.parseInt(tmpItem[3]);
quantity += tmpQuant;
tmpItem[3] = Integer.toString(quantity);
}
else {
items.put(itemId, item);
}
}
public float getTotalCost() {
Enumeration e = items.elements();
String[] tmpItem;
float totalCost = 0.00f;
while (e.hasMoreElements()) {
tmpItem = (String[])e.nextElement();
totalCost += (Integer.parseInt(tmpItem[3]) *
Float.parseFloat(tmpItem[2]));
}
return totalCost;
}
}
答案 0 :(得分:2)
Hashtable
已同步,可能会导致性能问题,因此建议您使用类似HashMap
或其他任何实现Map
的类。
实际上,如果您将代码更改为使用Map
,则不会出现市长问题(实际上Hashmap
本身会实现Map
)。
答案 1 :(得分:1)
如果您想查找具有itemId
的项目,由于访问时间的原因,最佳数据结构将为HashMap
。
但是,如果您根据itemId
对项目排序,则可以将其他数据结构用作arraylist
或array
,甚至可以使用四个公共变量创建自己的类。
但我说,一旦获得搜索,最好的DS将是hashMap