如何存储哈希映射以外的字符串整数对?

时间:2018-05-25 10:58:14

标签: android android-recyclerview recycler-adapter

enter image description here

这是我的回收站视图,我在其中存储与费用相关的信息。我想总结每个相应用户的支付金额。例如, sadaf:Rs(50 + 10 + 5)= 65,Gulatiji:(50)Rs = 50,Amen:(50 + 5)= Rs 55

我想过使用哈希映射,但问题是我的回收站视图中的用户名不是唯一的。那么,我应该如何存储每个相应用户的总和。 我也试过了,但这给了我错误的答案。 我能够成功汇总总金额,但对于支付的金额,它给了我错误的答案。目前,我只是试图通过使用整数变量my_total计算单个用户的总数。我得到sadaf的答案为110但它应该是65。

 calcuationAdap = new CalcuationAdap(Calculation.this,data);
                    for (int i = 0 ;i<data.size();i++) {
                        System.out.println(data.get(i).getItem());
                        main_total = main_total + Integer.parseInt(data.get(i).getTot_amt());
                    }

                    for(int i=0;i<data.size();i++)
                    {
                        for( int j=i+1;j<data.size()-1;j++)
                        {
                            if(data.get(i).getUser_name().equals(data.get(j).getUser_name()))
                            {
                                System.out.println(data.get(i).getUser_name());
                                my_total = my_total+Integer.parseInt(data.get(i).getMy_amt());
                            }
                        }
                    }
                    Toast.makeText(getApplicationContext(), String.valueOf(main_total ), Toast.LENGTH_SHORT).show();
                    Toast.makeText(getApplicationContext(), String.valueOf(my_total), Toast.LENGTH_SHORT).show();

2 个答案:

答案 0 :(得分:1)

如果您有用户ID,请使用用户ID。另外明智地使用下面的代码来获得每个总金额

 calcuationAdap = new CalcuationAdap(Calculation.this,data);

    HashMap<String,Integer> result =new HashMap<>();

    for (int i = 0 ;i<data.size();i++) {
        System.out.println(data.get(i).getItem());
        main_total = main_total + Integer.parseInt(data.get(i).getTot_amt());
    }

    for(int i=0;i<data.size();i++) {
        if (result.containsKey(data.get(i).getUser_name())){
            Integer addTotal=result.get(data.get(i).getUser_name());
            addTotal= addTotal + Integer.parseInt(data.get(i).getMy_amt());
            result.put(data.get(i).getUser_name(),addTotal);
        }else {
            result.put(data.get(i).getUser_name(),Integer.parseInt(data.get(i).getMy_amt()));
        }
    }
    Toast.makeText(getApplicationContext(), String.valueOf(main_total ), Toast.LENGTH_SHORT).show();
    for (Map.Entry<String, Integer> entry:result.entrySet()) {
        System.out.println(entry.getKey() + "/" + entry.getValue());
        Toast.makeText(getApplicationContext(), entry.getKey() + "/" + entry.getValue(), Toast.LENGTH_SHORT).show();
    }

答案 1 :(得分:0)

创建一个类似

的模型类
public class MyDataClass {
    String userName;
    String date;
    String item;
    int totoalAmount;
    int amountPaid;

    public int getAmountPaid() {
        return amountPaid;
    }

    public int getTotoalAmount() {
        return totoalAmount;
    }

    public String getDate() {
        return date;
    }

    public String getItem() {
        return item;
    }

    public String getUserName() {
        return userName;
    }

    public void setAmountPaid(int amountPaid) {
        this.amountPaid = amountPaid;
    }

    public void setDate(String date) {
        this.date = date;
    }

    public void setItem(String item) {
        this.item = item;
    }

    public void setTotoalAmount(int totoalAmount) {
        this.totoalAmount = totoalAmount;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }
}

并且每当您需要将数据存储为此类型的列表时,创建此类型的数组列表就像 ArrayList list = new ArrayList&lt;&gt;() 并使用getter方法(如

)创建此类的对象以存储数据
MyDataClass data =new MyDataClass()
data.setUserName("userName")
....
list.add(data);

无论何时需要获取数据,都可以使用getter方法获取数据,如

list.get(index).getUserName();
相关问题