Как сохранить строку целочисленной пары, кроме хэш-карты? - PullRequest
0 голосов
/ 25 мая 2018

enter image description here

Это мое представление переработчика, в котором я храню информацию о расходах.Я хочу подвести сумму, выплаченную каждому соответствующему пользователю.Например, sadaf: рупий (50 + 10 + 5) = 65, Гулатиджи: (50) рупий = 50, аминь: (50 + 5) = рупий 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 голосов
/ 25 мая 2018

Если у вас есть идентификатор пользователя, используйте идентификатор пользователя.в противном случае используйте приведенный ниже код для получения каждой общей суммы

 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();
    }
0 голосов
/ 25 мая 2018

создайте класс модели, например

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 <> (), и создайте объект изэтот класс для хранения данных с помощью методов получения, таких как

MyDataClass data =new MyDataClass()
data.setUserName("userName")
....
list.add(data);

, и всякий раз, когда вам нужно получить данные, используйте метод получения, чтобы получить данные типа

list.get(index).getUserName();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...