1. 程式人生 > >兩組資料按指定比例混排

兩組資料按指定比例混排

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());     }      }