java - java中通过分组列表来统计数量

标签 java list count grouping

我需要使用属性 ID 计算医生交易总额,然后使用列表中的属性 ID 计算医生支付总额。 怎么解决呢?我忍不住要数它。 请告诉

这是我的代码:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class SandboxList {
    public static void main(String[] args) {

        List<Doctor> doctors = new ArrayList<Doctor>();
        doctors.add(new Doctor("1726", "John", 10000.00));
        doctors.add(new Doctor("4321", "Max", 20000.00));
        doctors.add(new Doctor("1726", "John", 40000.00));
        doctors.add(new Doctor("4321", "Max", 2000.00));
        doctors.add(new Doctor("7765", "Sam", 50000.00));
        doctors.add(new Doctor("4321", "Max", 6000.00));

        /*  I want Output should be Like below
            ID : 1726   Name : John Total_payment : 50000.00  total_transaction : 2
            ID : 4321   Name : Max  Total_payment : 28000.00  total_transaction : 3
            ID : 7765   Name : Sam  Total_payment : 50000.00  total_transaction : 1

         */

        Map<String, List<Doctor>> groupedDoctors = new HashMap<String, List<Doctor>>();
        for (Doctor doctor: doctors) {
            String key = doctor.doctor_id;
            if (groupedDoctors.get(key) == null) {
                groupedDoctors.put(key, new ArrayList<Doctor>());
            }
            groupedDoctors.get(key).add(doctor);
        }

        Set<String> groupedDoctorsKeySet = groupedDoctors.keySet();
        for (String doctorId: groupedDoctorsKeySet) {
           List<Doctor> dctrs = groupedDoctors.get(doctorId);
           for (Doctor doctor : dctrs) {
                System.out.println("ID : "+doctor.doctor_id+"\t"+"Name : "+doctor.doctor_name+"\t"+"total_Payment : "+doctor.doctor_payment);
            }
        }


    }
}

class Doctor {

    String doctor_id;
    String doctor_name;
    Double doctor_payment;

    Doctor(String doctor_id, String doctor_name, Double doctor_payment) {

        this.doctor_id = doctor_id;
        this.doctor_name = doctor_name;
        this.doctor_payment = doctor_payment;

    }
}

最佳答案

更改代码:

    for (String doctorId : groupedDoctorsKeySet) {
        List<Doctor> dctrs = groupedDoctors.get(doctorId);

        Double total_payment = 0d;
        String doctor_name = null;
        for (Doctor doctor : dctrs) {
            if (doctor_name == null) {
                doctor_name = doctor.doctor_name;
            }
            total_payment += doctor.doctor_payment;
        }
        Doctor doctor = new Doctor(doctorId, doctor_name, total_payment);
        System.out.println("ID : " + doctor.doctor_id + "\t" + "Name : " + doctor.doctor_name + "\ttotal_Payment : " + doctor.doctor_payment);
    }

关于java - java中通过分组列表来统计数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37648758/

相关文章:

javascript - 如何使用jquery从元素中获取类

python - 创建一个在调用时将递增 1 的函数

Java:推送通知已发送但未收到

java - DynamoDB 用户管理的用户组

python - 比较两个 1's & 0' s 的大列表并返回差异计数/百分比的最快方法是什么?

python - 嵌套列表中的 curs.fetchall() python

java - flatMap() 将 LinkedList<String> 流转换为 String 流

java - Webdriver:java.net.BindException:地址已在使用:连接

python - Python切片语法list[::-1]中第一个冒号怎么解释

C++ 字符串操作/输入