求java具体设计思路,在这样一个场景的,轮询论算法该如何设计?

现有:
用户A(角色1)
用户B(角色1)
用户C(角色1)
用户D(角色1)

用户C(角色2)
用户D(角色2)

需求:
需设计用户的轮询算法,假设源源不断的物件要派发给用户ABCD, 这些物件分为种类A物件和种类B物件,各类物件出现机率不确定,
其中,种类物件发给角色1的用户,种类B的物件发给角色2的用户,现要将这1000个物件派发给ABCD这4个用户,在派发量达到一
定数量后,物件派发情况需满足以下条件(如下分配样例):

1.每个用户收到的物件总量一致
2.每个角色下对应的用户收到的物件平均

分配样例如下:
用户A(角色1) :200
用户B(角色1): 200
用户C(角色1):100
用户D(角色1):100

用户C(角色2):100
用户D(角色2):100

那你要先将物件排序,然后按次序分给4个用户
要么你维持2个索引,一个代表A物件下一个应该派发给谁,一个代表B物件下一次应该派发给谁,每派发一次就++,溢出了就归零


public class Test1 {

    private static int index = 0;
    private static String[] players = {"A", "B", "C", "D"};

    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            System.out.println(get());
        }

    }

    public static String get() {
        String player = players[index];
        index++;
        if (index >= players.length) {
            index = 0;
        }
        return player;
    }

}

写个简单队列,每次调用get方法,取出要发送的人