1

有没有使用哈希表的替代方法?我有这段代码,想知道是否可以不使用它。我所拥有的是工作查找,但有人告诉我不要使用它。任何帮助表示赞赏。

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;
}

}
4

2 回答 2

2

Hashtable是同步的,这可能会导致性能问题,这就是为什么建议您使用类似 aHashMap或任何其他合适的实现Map.

实际上,如果您将代码更改为使用 aMap您将不会遇到市长问题(实际上Hashmap它本身实现了Map)。

于 2013-07-29T03:22:06.223 回答
1

如果您想找到具有itemId最佳数据结构的项目,那将是HashMap因为访问时间。
但是如果您的项目是根据排序itemId的,您可以使用其他数据结构,arraylist甚至可以使用array四个公共变量创建您自己的类。
但我说一旦搜索最佳 DS 的收益将是hashMap

于 2013-07-29T03:28:15.653 回答