Hashtable替代品

时间:2013-07-29 03:19:36

标签: java hashtable

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

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

}

2 个答案:

答案 0 :(得分:2)

Hashtable已同步,可能会导致性能问题,因此建议您使用类似HashMap或其他任何实现Map的类。

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

答案 1 :(得分:1)

如果您想查找具有itemId的项目,由于访问时间的原因,最佳数据结构将为HashMap
但是,如果您根据itemId对项目排序,则可以将其他数据结构用作arraylistarray,甚至可以使用四个公共变量创建自己的类。
但我说,一旦获得搜索,最好的DS将是hashMap