/**
* 需求描述
* 返回一个map,map中存放的一下的列表
* 综合排序:List<id> 1,2,3,4,5,6
* 销量排序:List<id> 6,4,68,9,0,8
* 价格排序:List<id> 8,2,3,5,6,7,3
* 处理后的结果:
* 假定要取出6个数据,预先从指定的列表顺序。在list1中取一个元素,list2中取出一个元素,list3中取出一个元素。如果上一个list中获得值,
* 继续当前list的下个元素,循环上述操作,直到取到6个元素
* 得到结果集 1,2,6,4,8,3
* <p>
* Created by lijianzhen1 on 2017/6/15.
*/
public class Test {
public static void main(String[] args) {
Map<Integer, List<Integer>> unDealWithMap = genrateResultMap();
Integer[] enums = {1, 2, 3};//对应的枚举数据
//处理后的结果集合
Map<Integer, Integer> resultMap = Maps.newHashMap();
//对应各个列表的游标
Map<Integer, Integer> vernier = Maps.newHashMap();
//获得对应的游标初始位置
for (Integer index : enums) {
vernier.put(index, 0);
}
//默认选择返回的项为6项
while (resultMap.size() < 6)
//循环枚举值
for (Integer index : enums) {
//获得对应的列表
List<Integer> list = unDealWithMap.get(index);
if (CollectionUtils.isNotEmpty(list)) {
//列表的大小
int size = list.size();
Integer element = list.get(vernier.get(index));//获得当前的元素值
//是否已经记录
boolean isover = false;
//当前游标位置不能数组越界
while (vernier.get(index) < size) {
//已经记录跳出循环
if (isover) {
break;
}
//没有获得元素放入map中。如果返回是list在这里修改就好
if (null == resultMap.get(element)) {
resultMap.put(list.get(vernier.get(index)), list.get(vernier.get(index)));
isover = true;
}
vernier.put(index, vernier.get(index) + 1);
}
}
}
System.out.println(resultMap);
}
/**
* 生成需要的列表
* @return
*/
private static Map<Integer, List<Integer>> genrateResultMap() {
List<Integer> list1 = Lists.newArrayList();
List<Integer> list2 = Lists.newArrayList();
List<Integer> list3 = Lists.newArrayList();
int i = 0;
while (i < 10) {
list1.add(new Random().nextInt(100));
list2.add(new Random().nextInt(100));
list3.add(new Random().nextInt(100));
i++;
}
Map<Integer, List<Integer>> resultMap = Maps.newHashMap();
resultMap.put(1, list1);
resultMap.put(2, list2);
resultMap.put(3, list3);
return resultMap;
}
}
/**
* 需求描述
* 返回一个map,map中存放的一下的列表
* 综合排序:L