list集合根据对象属性,去重,合并list集合

public List getNewList(List oldList){
        HashMap tempMap = new HashMap();
        int invests = 0;
        int quantity = 0;
        //去掉重复的key
        for(InvestOrder investOrder : oldList){
            long temp = investOrder.getUserId();//user_id相同的属性
            String userName = investOrder.getUserName();
            String phone = investOrder.getPhone();
            //containsKey(Object key)该方法判断Map集合中是否包含指定的键名,如果包含返回true,不包含返回false
            //containsValue(Object value)该方法判断Map集合中是否包含指定的键值,如果包含返回true,不包含返回false
            if(tempMap.containsKey(temp)){
                InvestOrder newInvestOrder = new InvestOrder();
                newInvestOrder.setUserId(temp);
                newInvestOrder.setUserName(userName);
                newInvestOrder.setPhone(phone);
                //合并相同invest的quantity
                invests = tempMap.get(temp).getInvest() + investOrder.getInvest();
                quantity = tempMap.get(temp).getQuantity() + investOrder.getQuantity();
                newInvestOrder.setInvest(invests);
                newInvestOrder.setQuantity(quantity);
                //HashMap不允许key重复,当有key重复时,前面key对应的value值会被覆盖
                tempMap.put(temp,newInvestOrder);
            }else{
                //不存在重复的存入map
                tempMap.put(temp,investOrder );
            }
        }
        //去除重复key的list
        List newList = new ArrayList();
        //map转list
        for(long temp : tempMap.keySet()){
            newList.add(tempMap.get(temp));
        }
        return newList;
    }

你可能感兴趣的:(JAVA语言基础)