/**
* @Title: sort @Description: 类型任务数量是否没有达到上限的适用用户,从小到大排序 @param @param
* Map<UserEntity, Long> oldMap @param @return @return String
* userId @throws
*/
public String sortMap(Map<String, Long> oldMap) {
// 对无顺序的map进行排序
ArrayList<Map.Entry<String, Long>> list = new ArrayList<Map.Entry<String, Long>>(oldMap.entrySet());
Collections.sort(list, new Comparator<Map.Entry<String, Long>>() {
@Override
public int compare(Entry<String, Long> arg0, Entry<String, Long> arg1) {
return (int) (arg0.getValue() - arg1.getValue());
}
});
// 对有序数组进行判断,该类型任务最少的用户为多人的场合,随机分配
long lastUserTaskCount = 0;
String theSuitableUserId = "";
List<String> listSuitableUser = new ArrayList<String>();
for (int m = 0; m < list.size(); m++) {
long nowUserTaskCount = list.get(m).getValue();
if (m == 0 || lastUserTaskCount == nowUserTaskCount)
listSuitableUser.add(list.get(m).getKey());
else
break;
lastUserTaskCount = list.get(m).getValue();
}
if (listSuitableUser.size() == 1)
theSuitableUserId = listSuitableUser.get(0);
else {
Random rand = new Random();
int k = rand.nextInt(listSuitableUser.size());
theSuitableUserId = listSuitableUser.get(k);
}
return theSuitableUserId;
}
* @Title: sort @Description: 类型任务数量是否没有达到上限的适用用户,从小到大排序 @param @param
* Map<UserEntity, Long> oldMap @param @return @return String
* userId @throws
*/
public String sortMap(Map<String, Long> oldMap) {
// 对无顺序的map进行排序
ArrayList<Map.Entry<String, Long>> list = new ArrayList<Map.Entry<String, Long>>(oldMap.entrySet());
Collections.sort(list, new Comparator<Map.Entry<String, Long>>() {
@Override
public int compare(Entry<String, Long> arg0, Entry<String, Long> arg1) {
return (int) (arg0.getValue() - arg1.getValue());
}
});
// 对有序数组进行判断,该类型任务最少的用户为多人的场合,随机分配
long lastUserTaskCount = 0;
String theSuitableUserId = "";
List<String> listSuitableUser = new ArrayList<String>();
for (int m = 0; m < list.size(); m++) {
long nowUserTaskCount = list.get(m).getValue();
if (m == 0 || lastUserTaskCount == nowUserTaskCount)
listSuitableUser.add(list.get(m).getKey());
else
break;
lastUserTaskCount = list.get(m).getValue();
}
if (listSuitableUser.size() == 1)
theSuitableUserId = listSuitableUser.get(0);
else {
Random rand = new Random();
int k = rand.nextInt(listSuitableUser.size());
theSuitableUserId = listSuitableUser.get(k);
}
return theSuitableUserId;
}