package test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
public class AvgCollection {
//催缴单费用list
static List<Integer> debitList=new ArrayList<Integer>();
//催收员个数
static Integer num=20;
//催缴员及对应账单
static Map<Integer,List<Integer>> map=new HashMap<Integer,List<Integer>>();
public static void main(String[] args) {
//随机生成催缴单
Random random=new Random();
for(int i=0;i<1000;i++){
debitList.add(random.nextInt(200));
}
//把账单按从大到小排序
Collections.sort(debitList,new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
if(o1>o2){
return -1;
}else if(o1<o2){
return 1;
}
return 0;
}
});
//初始化map
List<Integer> list=null;
Integer count=num;
for(;count>0;count--){
list=new ArrayList<Integer>();
map.put(count, list);
}
//分配催缴单
divideDebit(debitList,num,true);
//打印分配结果
for(Integer key:map.keySet()){
System.out.print("催缴员"+key+"催缴的账单为:");
Integer total=0;
for(Integer i:map.get(key)){
total=total+i;
System.out.print(i+"-");
}
System.out.println("催缴员"+key+"催缴的账单总额为:"+total);
}
}
public static void divideDebit(List<Integer> dList,Integer num,boolean direction){
if(dList.size()>=num){//账单大于人数
for(int i=0;i<num;i++){
Integer index;
if(direction){
index=i+1;
}else{
index=num-i;
}
List<Integer> list=map.get(index);
list.add(dList.get(i));
map.put(index, list);
}
//去除已经分配的账单
List<Integer> newDebitList=new ArrayList<Integer>();
for(int i=0;i<dList.size();i++){
if(i>num-1){
newDebitList.add(dList.get(i));
}
}
//
if(newDebitList.size()>0){
//下次分配账单,按反方向分配
divideDebit(newDebitList,num,!direction);
}
}else if(dList.size()<num){//账单小于人数
for(int i=0;i<dList.size();i++){
List<Integer> list=map.get(i+1);
list.add(dList.get(i));
map.put(i+1, list);
}
}
}
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
public class AvgCollection {
//催缴单费用list
static List<Integer> debitList=new ArrayList<Integer>();
//催收员个数
static Integer num=20;
//催缴员及对应账单
static Map<Integer,List<Integer>> map=new HashMap<Integer,List<Integer>>();
public static void main(String[] args) {
//随机生成催缴单
Random random=new Random();
for(int i=0;i<1000;i++){
debitList.add(random.nextInt(200));
}
//把账单按从大到小排序
Collections.sort(debitList,new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
if(o1>o2){
return -1;
}else if(o1<o2){
return 1;
}
return 0;
}
});
//初始化map
List<Integer> list=null;
Integer count=num;
for(;count>0;count--){
list=new ArrayList<Integer>();
map.put(count, list);
}
//分配催缴单
divideDebit(debitList,num,true);
//打印分配结果
for(Integer key:map.keySet()){
System.out.print("催缴员"+key+"催缴的账单为:");
Integer total=0;
for(Integer i:map.get(key)){
total=total+i;
System.out.print(i+"-");
}
System.out.println("催缴员"+key+"催缴的账单总额为:"+total);
}
}
public static void divideDebit(List<Integer> dList,Integer num,boolean direction){
if(dList.size()>=num){//账单大于人数
for(int i=0;i<num;i++){
Integer index;
if(direction){
index=i+1;
}else{
index=num-i;
}
List<Integer> list=map.get(index);
list.add(dList.get(i));
map.put(index, list);
}
//去除已经分配的账单
List<Integer> newDebitList=new ArrayList<Integer>();
for(int i=0;i<dList.size();i++){
if(i>num-1){
newDebitList.add(dList.get(i));
}
}
//
if(newDebitList.size()>0){
//下次分配账单,按反方向分配
divideDebit(newDebitList,num,!direction);
}
}else if(dList.size()<num){//账单小于人数
for(int i=0;i<dList.size();i++){
List<Integer> list=map.get(i+1);
list.add(dList.get(i));
map.put(i+1, list);
}
}
}
}