两个集合一起遍历的有关问题
两个集合一起遍历的问题
要求是:模拟超市收银系统的一些一般功能,J2SE实现,*面
在做循环扫描商品,并显示购物清单功能的时候遇到了点问题。
我的思路是:
1.建立一个类,类中包含商品Id,和number
然后从控制台循环接收扫描的ID和number,每次接收都保存成一个类对象
客户端建立a集合(ArrayList),每次循环都把这个对象add进去
当扫描结束之后,建立b集合(HashMap),键值1是1(代表扫描商品功能)
键值2是a集合,然后把b集合传入服务端
服务端接收到1就调用扫描商品的功能,然后在扫描商品功能里我就犯2了
不知道该怎么遍历集合,服务端这里貌似有三个集合,一个是b集合,一个是a集合,
一个是系统商品库集合(ArrayList保存的).服务端要做的事情就是,服务端传来的
Id和商品库中ID相同时候,把库存数量修改成购买数量,并且如果Id重复,就把购买数量相加,
然后把最终结果返回客户端,客户端再遍历输出到控制台
我总感觉我思路不对,太烦琐了,集合遍历这块还不容易实现,大家有木有其他好的实现思路,求分享。。
------解决方案--------------------
你描述需求比较绕啊。。。看了一半我就放弃了。。。
遍历单个集合可以用 迭代器 iterator
去集合(Set)中找元素,直接就可以get了,并不需要遍历。
------解决方案--------------------
b是个map
如果要,循环b 中的 a ,那么:
要求是:模拟超市收银系统的一些一般功能,J2SE实现,*面
在做循环扫描商品,并显示购物清单功能的时候遇到了点问题。
我的思路是:
1.建立一个类,类中包含商品Id,和number
然后从控制台循环接收扫描的ID和number,每次接收都保存成一个类对象
客户端建立a集合(ArrayList),每次循环都把这个对象add进去
当扫描结束之后,建立b集合(HashMap),键值1是1(代表扫描商品功能)
键值2是a集合,然后把b集合传入服务端
服务端接收到1就调用扫描商品的功能,然后在扫描商品功能里我就犯2了
不知道该怎么遍历集合,服务端这里貌似有三个集合,一个是b集合,一个是a集合,
一个是系统商品库集合(ArrayList保存的).服务端要做的事情就是,服务端传来的
Id和商品库中ID相同时候,把库存数量修改成购买数量,并且如果Id重复,就把购买数量相加,
然后把最终结果返回客户端,客户端再遍历输出到控制台
我总感觉我思路不对,太烦琐了,集合遍历这块还不容易实现,大家有木有其他好的实现思路,求分享。。
------解决方案--------------------
你描述需求比较绕啊。。。看了一半我就放弃了。。。
遍历单个集合可以用 迭代器 iterator
去集合(Set)中找元素,直接就可以get了,并不需要遍历。
------解决方案--------------------
b是个map
如果要,循环b 中的 a ,那么:
- Java code
List a = new ArrayList(); Map b = new HashMap(); b.put(1, 1); b.put(2,b); List list = (List)b.get(2);//取得集合a for(Object o : list){//循环集合a }
------解决方案--------------------
就是循环嵌套
服务器端处理
- Java code
List<xxx> serverList = ...; //假设系统商品库集合,xxx是商品类 //接收处理 //假设用Object序列化传输 new ObjectInputStream ois = new ObjectInputStream(socket.getInputStream()); Map<Integer, Object> map = (Map<Integer, Object>)ois.readObject(); List<xxx> clientList = (List<xxx>)map.get(2); Map<Integer, xxx> result = new HashMap<Integer, xxx>(); //返回给客户端 for (xxx a : clientList) { for (xxx b : serverList) { if (a.getId() == b.getId()) {//客户端和系统商品库集合id相同 b.setAmount(b.getAmout() + a.getAmount()); //系统商品集合数量修改 //....其他修改 } } if (!result.containsKey(a.getId)) { result.put(a.getId(), new xxx()); } xxx b = result.get(a.getId()); b.setAmout(b.getAmout() + a.getAmout()); //返回给客户端的清单合计 //...其他合计 }
------解决方案--------------------
就是个循环嵌套,有什么不能遍历的,赞成5楼!