关看标题,可能大家不是很明白说的是什么意思,不如先看看展示图。
这是在多拿网上面看到的一个加入购物车功能:
当我们点击加入购物车后:
然后查看购物车信息:
最后的效果就是购物车中的信息展示!!!
现在大家有没有明白我要说的是什么东东?如果还是不太明白,那么我就用最简单的语句描述一下:
就是说我们添加了购物车信息,那么我们要怎样把购物车中的信息向上面一样展示出来。
这里就会涉及到数据的封装了。
多的就不用说了,下面直接来做个项目,大家就知道啦...
=============================================================
项目结构:
运行结果;
看到这里,我想大家一定知道我要干嘛了吧....
/ShoppingCart/src/com/b510/Business.java
1 /** 2 * 3 */ 4 package com.b510; 5 6 import java.util.Date; 7 8 /** 9 * 商家实体类 10 * 11 * @date 2012-12-28 12 * @author hongten(hongtenzone@foxmail.com) 13 * 14 */ 15 public class Business { 16 17 /** 18 * 商家编号 19 */ 20 private Integer id; 21 /** 22 * 商家名称 23 */ 24 private String name; 25 /** 26 * 创建时间 27 */ 28 private Date createDate; 29 30 public Integer getId() { 31 return id; 32 } 33 34 public void setId(Integer id) { 35 this.id = id; 36 } 37 38 public String getName() { 39 return name; 40 } 41 42 public void setName(String name) { 43 this.name = name; 44 } 45 46 public Date getCreateDate() { 47 return createDate; 48 } 49 50 public void setCreateDate(Date createDate) { 51 this.createDate = createDate; 52 } 53 54 }
/ShoppingCart/src/com/b510/CashTicket.java
1 /** 2 * 3 */ 4 package com.b510; 5 6 import java.util.Date; 7 8 /** 9 * 购物券实体类 10 * 11 * @date 2012-12-28 12 * @author hongten(hongtenzone@foxmail.com) 13 * 14 */ 15 public class CashTicket { 16 17 /** 18 * 购物券编号 19 */ 20 private Integer id; 21 /** 22 * 购物券标题 23 */ 24 private String title; 25 /** 26 * 创建时间 27 */ 28 private Date createDate; 29 30 public Integer getId() { 31 return id; 32 } 33 34 public void setId(Integer id) { 35 this.id = id; 36 } 37 38 public String getTitle() { 39 return title; 40 } 41 42 public void setTitle(String title) { 43 this.title = title; 44 } 45 46 public Date getCreateDate() { 47 return createDate; 48 } 49 50 public void setCreateDate(Date createDate) { 51 this.createDate = createDate; 52 } 53 54 }
/ShoppingCart/src/com/b510/MyMap.java
1 /** 2 * 3 */ 4 package com.b510; 5 6 import java.util.ArrayList; 7 import java.util.Date; 8 import java.util.HashMap; 9 import java.util.Iterator; 10 import java.util.List; 11 import java.util.Map; 12 import java.util.Set; 13 14 /** 15 * 测试类 16 * 17 * @date 2012-12-28 18 * @author hongten(hongtenzone@foxmail.com) 19 * 20 */ 21 public class MyMap { 22 23 public static void main(String[] args) { 24 // 封装元数据 25 Map<Business, CashTicket> orgData = new HashMap<Business, CashTicket>(); 26 // 商家b1 27 Business b1 = new Business(); 28 b1.setId(1); 29 b1.setName("b1"); 30 b1.setCreateDate(new Date()); 31 32 // 商家b1的克隆(和商家b1是一样的,只不过名称不同罢了) 33 Business clone_b1 = new Business(); 34 clone_b1.setId(1); 35 clone_b1.setName("b1"); 36 clone_b1.setCreateDate(new Date()); 37 38 // 商家b2 39 Business b2 = new Business(); 40 b2.setId(2); 41 b2.setName("b2"); 42 b2.setCreateDate(new Date()); 43 44 // //////////////////////////////////////////////////// 45 // 购物券c1 46 CashTicket c1 = new CashTicket(); 47 c1.setId(1); 48 c1.setTitle("c1"); 49 c1.setCreateDate(new Date()); 50 // 购物券c2 51 CashTicket c2 = new CashTicket(); 52 c2.setId(2); 53 c2.setTitle("c2"); 54 c2.setCreateDate(new Date()); 55 // 购物券c3 56 CashTicket c3 = new CashTicket(); 57 c3.setId(3); 58 c3.setTitle("c3"); 59 c3.setCreateDate(new Date()); 60 61 // //////////////////////////////////////////////////// 62 // 下面的意思是构造元数据:也即商家b1(clone_b1)拥有购物券c1,c3,商家b2拥有购物券c2 63 // map<b1,c1> 64 // map<b2,c2> 65 // map<clone_b1,c3> 66 // //////////////////////////////////////////////////// 67 orgData.put(b1, c1); 68 orgData.put(b2, c2); 69 orgData.put(clone_b1, c3); 70 71 getMapInfo(getMap(orgData)); 72 } 73 74 /** 75 * 封装数据 76 * 77 * @param orgData 78 * 元数据 79 * @return 80 */ 81 public static Map<Business, List<CashTicket>> getMap( 82 Map<Business, CashTicket> orgData) { 83 Map<Business, List<CashTicket>> resultMap = new HashMap<Business, List<CashTicket>>(); 84 85 Set<Business> orgDataKeys = orgData.keySet(); 86 Iterator<Business> orgIterator = orgDataKeys.iterator(); 87 Business org_business = null; 88 while (orgIterator.hasNext()) { 89 // 获取元数据中的商家business 90 org_business = orgIterator.next(); 91 // 获取元数据中的商家business对应的购物券 92 CashTicket org_cashTicket = orgData.get(org_business); 93 // //////////////////////////////////////////// 94 95 // 现在加入一个business和一个cashTicket 96 Set<Business> keys = resultMap.keySet(); 97 // keySet()获得的是一个集合中所有的键对象 98 Iterator<Business> it = keys.iterator(); 99 Business key_business = null; 100 boolean flag = false; 101 while (it.hasNext()) { 102 key_business = it.next(); 103 if (key_business.getId() == org_business.getId()) { 104 flag = true; 105 } 106 } 107 if (flag) { 108 resultMap.get(key_business).add(org_cashTicket); 109 } else { 110 List<CashTicket> value_cashTicket = new ArrayList<CashTicket>(); 111 value_cashTicket.add(org_cashTicket); 112 resultMap.put(org_business, value_cashTicket); 113 } 114 } 115 return resultMap; 116 } 117 118 /** 119 * 打印出map中的信息 120 * 121 * @param map 122 */ 123 public static void getMapInfo(Map<Business, List<CashTicket>> map) { 124 Set<Business> end_keys = map.keySet(); 125 // keySet()获得的是一个集合中所有的键对象 126 Iterator<Business> it = end_keys.iterator(); 127 while (it.hasNext()) { 128 Business key_business = it.next(); 129 130 List<CashTicket> value_cashTicket = map.get(key_business); 131 // 通过键来取得Map中的值 132 System.out.println("商家:id : [" + key_business.getId() + "] name : " 133 + key_business.getName() + "]"); 134 for (CashTicket ct : value_cashTicket) { 135 System.out.println(" 现金券: id :[" + ct.getId() + "] title : [" 136 + ct.getTitle() + "]"); 137 } 138 System.out.println("=================================="); 139 } 140 } 141 }
I'm Hongten