还是购物车 用hashmap如何实现对购物车中商品名字相同的商品进行数量的增加? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 class 商品{}class 商品类别{ 数量 商品}class 购物车{ private 商品类别} import java.util.HashMap;import java.util.Iterator;import java.util.Map;import com.forth.restrantManager.entity.FoodInfoEntity;/** * 购物车 * * @author linkang * */public class ShopCarUtil { int total;// 购物车中的物品总量 Map foodMap = new HashMap(); float totalPrice=0.0f; public float getTotalPrice() { float price = 0f; Iterator iterator = this.getFoodMap().values().iterator(); FoodItem item = null; while (iterator.hasNext()) { item = (FoodItem) iterator.next(); price += item.getQuitity() * item.getEntity().getFoodPrice(); } return price; } public void setTotalPrice(float totalPrice) { this.totalPrice = totalPrice; } // 第一次购买和重复购买相同的食物 public void AddFood(FoodInfoEntity entity) { FoodItem foodItem = (FoodItem) foodMap.get(entity.getId() + ""); if (foodItem == null) { // 第一次购买 foodMap.put(entity.getId() + "", new FoodItem(entity)); } else { foodItem.AddQuitity(); } total++; } // 重复购买相同的食物 public void Add(int id) { FoodItem foodItem = (FoodItem) foodMap.get(id + ""); if (foodItem != null) { foodItem.AddQuitity(); total++; } } // 减少商品数量 public void Sub(int id) { FoodItem foodItem = (FoodItem) foodMap.get(id + ""); if (foodItem.getQuitity() == 1) { ClearOne(id); } else { foodItem.SubQuitity(); total--; } } // 修改商品数量 public void UpdateQuitity(int id, int count) { FoodItem foodItem = (FoodItem) foodMap.get(id + ""); if (foodItem != null) { int temp = count - foodItem.getQuitity(); this.total += temp; foodItem.setQuitity(count); } } // 移除一个商品 public void ClearOne(int id) { FoodItem foodItem = (FoodItem) foodMap.get(id + ""); if (foodItem != null) { foodMap.remove(id + ""); total -= foodItem.getQuitity(); } } // 全部移除商品 public void ClearAll() { if (foodMap != null) { foodMap.clear(); total = 0; } } // 返回食物总价钱 public float TotolPirce() { float price = 0f; Iterator iterator = this.getFoodMap().values().iterator(); FoodItem item = null; while (iterator.hasNext()) { item = (FoodItem) iterator.next(); price += item.getQuitity() * item.getEntity().getFoodPrice(); } return price; } public int getTotal() { return total; } public void setTotal(int total) { this.total = total; } public Map getFoodMap() { return foodMap; } public void setFoodMap(Map foodMap) { this.foodMap = foodMap; } public static void main(String[] args) { // System.out.println(new DecimalFormatSymbols(0.00).format(34));// // .format(Double.valueOf((5*5.5f)); // new DecimalFormat(0.00).format(new Double().parseDouble(5*5.5f) ) }} class 购物车{private 商品类别}在商品类中已近定义了商品类型的属性,所以在购物车不需要定义商品类别的属性,另外,在购物车类中还要定义一个购买商品的数量这个属性。 hashmap;在添加以个商品时;和hashmap里面相应的字段比如Id比较;如果存在,进行数量加1;不存在,进行添加;希望对你有帮助 怎么加入一个判定条件,根据当前线程的的名字,来做出动作。 疯狂java讲义 哪里有全本下载!? 真正开发中java的键盘输入使用哪个类 一个html小问题;谢谢了 各位帮帮忙,有个java程序不知哪错了 请问用Swing怎么实现Eclipse(swt)样式的ToolBar? JTable 中阻止修改数据的方法? 关于在JAVA中绘画GIF动画文件的问题!非常的奇怪!!! 高分求网络编程方面的书籍 Java如何访问word文档的属性? 怎样实现用SIP线路群发传真? 新手,请教!
class 商品类别{
数量
商品
}class 购物车{
private 商品类别
}
import java.util.Iterator;
import java.util.Map;import com.forth.restrantManager.entity.FoodInfoEntity;
/**
* 购物车
*
* @author linkang
*
*/
public class ShopCarUtil {
int total;// 购物车中的物品总量
Map foodMap = new HashMap();
float totalPrice=0.0f;
public float getTotalPrice() {
float price = 0f;
Iterator iterator = this.getFoodMap().values().iterator();
FoodItem item = null;
while (iterator.hasNext()) {
item = (FoodItem) iterator.next();
price += item.getQuitity() * item.getEntity().getFoodPrice();
}
return price;
} public void setTotalPrice(float totalPrice) {
this.totalPrice = totalPrice;
} // 第一次购买和重复购买相同的食物
public void AddFood(FoodInfoEntity entity) {
FoodItem foodItem = (FoodItem) foodMap.get(entity.getId() + "");
if (foodItem == null) {
// 第一次购买
foodMap.put(entity.getId() + "", new FoodItem(entity));
} else {
foodItem.AddQuitity();
}
total++;
} // 重复购买相同的食物
public void Add(int id) {
FoodItem foodItem = (FoodItem) foodMap.get(id + "");
if (foodItem != null) {
foodItem.AddQuitity();
total++;
}
} // 减少商品数量
public void Sub(int id) {
FoodItem foodItem = (FoodItem) foodMap.get(id + "");
if (foodItem.getQuitity() == 1) {
ClearOne(id);
} else {
foodItem.SubQuitity();
total--;
}
} // 修改商品数量
public void UpdateQuitity(int id, int count) {
FoodItem foodItem = (FoodItem) foodMap.get(id + "");
if (foodItem != null) {
int temp = count - foodItem.getQuitity();
this.total += temp;
foodItem.setQuitity(count);
}
} // 移除一个商品
public void ClearOne(int id) {
FoodItem foodItem = (FoodItem) foodMap.get(id + "");
if (foodItem != null) {
foodMap.remove(id + "");
total -= foodItem.getQuitity();
}
} // 全部移除商品
public void ClearAll() {
if (foodMap != null) {
foodMap.clear();
total = 0;
}
} // 返回食物总价钱
public float TotolPirce() {
float price = 0f;
Iterator iterator = this.getFoodMap().values().iterator();
FoodItem item = null;
while (iterator.hasNext()) {
item = (FoodItem) iterator.next();
price += item.getQuitity() * item.getEntity().getFoodPrice();
}
return price;
} public int getTotal() {
return total;
} public void setTotal(int total) {
this.total = total;
} public Map getFoodMap() {
return foodMap;
} public void setFoodMap(Map foodMap) {
this.foodMap = foodMap;
} public static void main(String[] args) {
// System.out.println(new DecimalFormatSymbols(0.00).format(34));//
// .format(Double.valueOf((5*5.5f));
// new DecimalFormat(0.00).format(new Double().parseDouble(5*5.5f) )
}
}
private 商品类别
}在商品类中已近定义了商品类型的属性,所以在购物车不需要定义商品类别的属性,另外,在购物车类中还要定义一个购买商品的数量这个属性。
在添加以个商品时;
和hashmap里面相应的字段比如Id比较;
如果存在,进行数量加1;
不存在,进行添加;
希望对你有帮助