兩組資料按指定比例混排
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) { System.out.println("count:" + count); if(n == list2.size()) { while(m < list1.size()) { System.out.println("m:" + m); count++; list.add(list1.get(m)); m++; } } if(m == list1.size()) { while(n < list2.size()) { System.out.println("n:" + n); count++; list.add(list2.get(n)); n++; } } if(count%p == 0) { while(m < list1.size()) { System.out.println("m:" + m); count++; list.add(list1.get(m)); m++; if(m%p1 == 0) break; } } else { while(n < list2.size()) { System.out.println("n:" + n); 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()); } }