下面是我的圖書購物車(自己寫的)
package com.jc.ts.services;
import java.math.BigDecimal;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import com.jc.ts.entity.BookCar;
import com.jc.ts.entity.BookInfo;
/**
* 該類提供購物車的操作
* */
public class CartItemsService {
private Map<String,BookCar> itemMap=null;//購物車Map集合
private Collection<BookCar> items;//購物車項
public CartItemsService()
{
itemMap=new HashMap<String ,BookCar>();
}
public Collection<BookCar> getItems() {
return items;
}
public void setItems(Collection<BookCar> items) {
this.items = items;
}
public Map<String, BookCar> getItemMap() {
return itemMap;
}
public void setItemMap(Map<String, BookCar> itemMap) {
this.itemMap = itemMap;
}
public int getBookCarSize()
{
return itemMap.size();
}
public boolean containById(String bookid)
{
return itemMap.containsKey(bookid);
}
public void addBookCarItems(BookInfo bookInfo)
{
if(bookInfo!=null)
{
BookCar bookCar=(BookCar)itemMap.get(bookInfo.getBid());
if(bookCar==null)
{
bookCar=new BookCar();
bookCar.setBookinfo(bookInfo);
bookCar.increaseQuantity();
itemMap.put(bookInfo.getBid(),bookCar);
items=itemMap.values();
}else {
bookCar.increaseQuantity();
}
}
}
public BookInfo removeCarItem(String bookid)
{
BookCar bookCar=itemMap.remove(bookid);
if(bookCar==null)
{
return null;
}
items=itemMap.values();
return bookCar.getBookinfo();
}
public BigDecimal getBookCarTotal()//獲得總金額
{
BigDecimal carTotal=new BigDecimal("0.00");
Iterator<BookCar> iterator=this.getAllCartItems();
while(iterator.hasNext())
{
BookCar bookCar=iterator.next();
BigDecimal carPrice=bookCar.getBookinfo().getBprice();
BigDecimal quantity=new BigDecimal(String.valueOf(bookCar.getQuantity()));
carTotal=carTotal.add(carPrice.multiply(quantity));
}
return carTotal;
}
public Iterator<BookCar> getAllCartItems(){
return itemMap.values().iterator();
}
public void increaseQuantityById(String bookid)
{
BookCar bookCar=itemMap.get(bookid);
if(bookCar!=null)
{
bookCar.increaseQuantity();
}
}
public void setQuantityById(String bookid,int quantity)//根據圖書ID增加數量
{
BookCar bookCar=itemMap.get(bookid);
if(bookCar!=null)
{
bookCar.setQuantity(quantity);
}
}
public void clear(){
itemMap.clear();
}
}
修改後傳入這個方法就可以了setQuantityById()
★★★ 註意購物車壹定要用Map 不能用List或ArrayList
因為購物車是顧客頻繁操作的功能
Map在取值或刪除值的效率比List或ArrayList要高的多
它基本不需要時間,而List或ArrayList還要遍歷。。。。。。
希望對妳有幫助!!