java List合并相同的项的问题?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java List合并相同的项的问题?相关的知识,希望对你有一定的参考价值。

我需要获得的结果是:10003314 0.0007
10003315 0.0001

就是把三个list中 '相同员工号' 的 '相同产品' 的两个百分比相乘后相加
即:10003314: 0.02*0.1+0.01*0.2+0.03*0.1=0.0007
下面是三个list,可以获取数据库中每个字段的值
List<Sale> sales=daos.findAll();
List<Product> products=daop.findAll();
List<BtAsp> btAsps=daob.findAll();
//btAsp(匹配员工号,10003314 匹配商品号或商品名称,111或苹果)
insert into btAsp values(1,10003314,111,'苹果',0.02);
insert into btAsp values(5,10003314,222,'香蕉',0.01);
insert into btAsp values(6,10003314,333,'橘子',0.03);
insert into btAsp values(2,10003315,200,'香蕉',0.01);
//product(匹配员工号,10003314 匹配商品号或商品名称,111或苹果)
insert into product values(1,10003314,111,'苹果1',0.1);
insert into product values(5,10003314,222,'香蕉1',0.2);
insert into product values(6,10003314,333,'橘子1',0.1);
insert into product values(2,10003315,200,'香蕉',0.1);
//sale(匹配员工号10003314)
insert into sale values(1,10003314,100,95,40,39,100,95,40,39);
insert into sale values(2,10003315,50,40,40,40,50,40,40,40);

单纯用sql语句有点难度
似乎需要用到存储过程
这个我不会
但是如果拿到程序里面要方便许多
没条数据做处理就好了
用两个哈希表和一个链表处理
问题不大追问

能不能给我点简单代码,hashmap,map这块有点欠缺,烦劳.

追答

我给你写个简单点的吧

    首先把员工编号为10003314的btAsp的数据写入一个链表里面
    list lst = new ArrayList<Double>();
    lst.add(0.02);
    lst.add(0.01);
    lst.add(0.03);
    HashMap map1 = new HashMap();                
    map.put("10003314", lst);
    就像这样把btAsp product表里面的数据放进hashmap里面
    然后进行计算就好了

额这个你研究研究hashmap和arraylist吧
逻辑就是冗长一点
一点一点处理就能出来
暂时没有时间帮你写
工作比较忙

追问

又看了2个多小时,试了好多遍,还是没有解决.请你有空的时候写一下好吗?感激不尽

把东西放进hashmap后就不会了
我的想法是先1次筛选得到相同的员工
2次筛选得到相同的产品

然后把相同产品的百分比做算数运算

感觉一个key+一个value不够用了.....
有点浆糊
我的qq:929415393 请赐教

追答

一个key对应一个list
一个ket对应一个list
一个list
一个key对应一个值那肯定不行了

参考技术A 放在map里面然后相同的key值做处理就行了追问

能否给我些代码?我实在想不出怎么做了

追答

if (map.containsKey(bean.getKey()))

map.put(bean.getKey(), map.get(bean.getKey())+ bean.getCount());
else
map.put(bean.getKey(), bean.getCount());

你根据自己的实际情况修改下吧

追问

代码中的bean是什么?getkey好像不是map里的方法

追答

这么好的思路,你也不给个分

以上是关于java List合并相同的项的问题?的主要内容,如果未能解决你的问题,请参考以下文章

如何将两个List合并,且其中不允许出现重复的项

java基础 合并两个类型相同的list

java中两个List合并,相同元素剔除的问题

润乾报表工具用数据集查询时怎么将符合某一列相同的项合并

Java 8 Stream根据某个相同的key合并两个Map List,其他key相同时优先保留其中一个List的值

合并两个数组,并且把相同的数值覆盖掉