import java.util.ArrayList;
import java.util.List;
/**
* 数据混排工具类
* @author jiliangshan
*
*/
public class MixUtils {
/**
*
* @param list1 混排对象1
* @param list2 混排对象2
* @param p1 第一个集合中元素占比 例如 p1 = 3
* @param p2 第二个集合中元素占比 例如 p2 = 2
* @return
*/
public static List<Object> mixData(List<Object> list1,List<Object> list2,int p1,int p2) {
if(list1 == null || list1.size() <= 0) {
return list2;
}
if(list2 == null || list2.size() <= 0) {
return list1;
}
int sumCount = list1.size() + list2.size();
int p = p1+p2;
List<Object> list = new ArrayList<>();
int m = 0;
int n = 0;
int count = 0;
while(count < sumCount) {
if(n == list2.size()) {
while(m < list1.size()) {
count++;
list.add(list1.get(m));
m++;
}
}
if(m == list1.size()) {
while(n < list2.size()) {
count++;
list.add(list2.get(n));
n++;
}
}
if(count%p == 0) {
while(m < list1.size()) {
count++;
list.add(list1.get(m));
m++;
if(m%p1 == 0) break;
}
} else {
while(n < list2.size()) {
count++;
list.add(list2.get(n));
n++;
if(n%p2 == 0) break;
}
}
}
return list;
}
public static void main(String args[]) {
List<Object> list1 = new ArrayList<>();
list1.add("公立1");
list1.add("公立2");
list1.add("公立3");
list1.add("公立4");
list1.add("公立5");
list1.add("公立6");
list1.add("公立7");
list1.add("公立8");
list1.add("公立9");
list1.add("公立10");
list1.add("公立11");
list1.add("公立12");
list1.add("公立13");
list1.add("公立14");
list1.add("公立15");
list1.add("公立16");
list1.add("公立17");
list1.add("公立18");
list1.add("公立19");
list1.add("公立20");
List<Object> list2 = new ArrayList<>();
list2.add("民营1");
list2.add("民营2");
list2.add("民营3");
list2.add("民营4");
list2.add("民营5");
list2.add("民营6");
list2.add("民营7");
list2.add("民营8");
list2.add("民营9");
list2.add("民营10");
List<Object> list = mixData(list1,list2,6,4);
System.out.println(list.toString());
}
}