本文主要是介绍项目实战のCollection和Map,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前面两篇文章讲了collection的list应用和set的应用
根据单列值和双列值分为collection和map然后根据是否有序将collection分为list和set。
Collection(单列值)
List(有序)
set(无序)
Map(键值对)
应用:collection适合进行显示和遍历,但是如果对数据进行操作的话用map的键值对很方便。以前只是做过相关的demo,现在项目中用到了,可以更淋漓尽致的理解理论知识,进行数据结构的选型:
购物车:包含很多个购物项的例子
package cn.itcast.shop.cart.vo;import cn.itcast.shop.product.vo.Product;
/** 购物项* **/
public class CartItem {public Product getProduct() {return product;}public int getCount() {return count;}public void setProduct(Product product) {this.product = product;}public void setCount(int count) {this.count = count;}public void setSubtotal(double subtotal) {this.subtotal = subtotal;}//小计自动计算public double getSubtotal() {return count*product.getShop_price();}private Product product;private int count;//某种商品数量private double subtotal;//小计}
package cn.itcast.shop.cart.vo;import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;/** 购物车* **/
public class Cart {//购物项集合:Map的key是商品pid,value是购物项。hashMap是无序的private Map<Integer, CartItem> map= new LinkedHashMap<Integer, CartItem>();//购物总金额private double total;//购物车的功能public Collection<CartItem> getCartItems(){return map.values();//返回值是一个collection,取得是map的值的集合}//1将购物项添加到购物车public void addCart(CartItem cartItem){/*判断购物车是否存在购物项* *若存在:* *数量增加* *总计+=购物项* *若不存在* *向map中增加购物项* *总计+=购物项* * * *///获得商品idInteger pid= cartItem.getProduct().getPid();//判断购物车中是否存在购物项if(map.containsKey(pid)){//存在CartItem _cartItem=map.get(pid);//原来的购物项_cartItem.setCount(_cartItem.getCount()+cartItem.getCount());}else{//不存在map.put(pid, cartItem);}total+=cartItem.getSubtotal();}public double getTotal() {return total;}//2从购物车移除购物项public void removeCart(Integer pid){//将购物项移除购物车map.remove()的时候返回的是移除的购物项CartItem cartItem= map.remove(pid);//总结-=移除的购物项的小计total-=cartItem.getSubtotal();}//3清空购物车public void clearCart(){//将所有的购物项清空map.clear();//将总计设置成0total=0;}
}
这篇关于项目实战のCollection和Map的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!