本文共 1583 字,大约阅读时间需要 5 分钟。
权重排序(java)Q:我们去饭店排队等号吃饭,每天最多100桌客人,这100桌客人拿到的排队号是不会重复的(1-100)。如果叫号一阵子没人应答,这桌客人就要被延号三桌。如果延号的情况比较多,饭店就很难根据排队号来准确的排序了,那么如何保证排序始终是对的呢?Clue:不用排队号排序,而拓展出依赖排序号的权重(排队号*容量=权重)每当客人被延号就找出他们往后数两桌的客人的权重,在这个基础上+1,这样就算每桌客人都被延号也可以保证按权重排序不会乱了
import java.util.ArrayList;import java.util.List;public class WeightSort { public void Test(){ ListvoList = new ArrayList(); for(int i=0; i < 30; i++){ voList.add(i); } Integer QuqueStatus = 10; Integer getWeightResult = this.updateWaitQueue(voList,QuqueStatus); System.out.println(getWeightResult); } private Integer updateWaitQueue(List voList,Integer QuqueStatus) { int FirstMiss = 10; //获取有序的appoId集合 List appoIdList = new ArrayList(); for(int i=0; i < voList.size(); i++){ appoIdList.add(voList.get(i)); } Integer nowDOAppId = 1; Integer nowIndex = appoIdList.indexOf(nowDOAppId); Integer targetIndex = null; if(FirstMiss==QuqueStatus){ if(nowIndex == voList.size() - 1){ targetIndex = nowIndex + 1; } else{ targetIndex = nowIndex + 2; } } Integer getWeightResult =0; // if(voList.size() != 1 && null != targetIndex){ getWeightResult = this.getNewWeight(targetIndex); } return getWeightResult; } //增加权重 private Integer getNewWeight(Integer targetIndex){ //参数校验省略 Integer nowNewWeight = targetIndex ++; return nowNewWeight; }}
转载地址:http://eyrsi.baihongyu.com/