-1

我在这里有一个对象列表:

List<Object> list = new ArrayList<Object>();
for(int x = 0; x < 100; x++) {
    list.add(x);
}
Collections.shuffle(list);

以及我希望将其项目list均匀分类的其他列表的列表。

List<List<Object>> evenLists = new ArrayList<List<Object>>();
for(int x = 0; x < 4; x++) {
    evenLists.add(new ArrayList<Object>());
}

例如。每个列表中有 25 个,evenLists但如果有 5 个列表,evenLists那么每个列表有 20 个
,到目前为止我有这个,但它只适用于 2 个已定义的列表,按 50/50 对它们进行排序

List<Object> list1 = new ArrayList<Object>();
List<Object> list2 = new ArrayList<Object>();
double chance = 0.5D;
for(Object obj:list) {
    if(list1.size() < (list.size() * chance1)) {
        list1.add(obj);
    } else if(list2.size() < list.size() * chance2) {
        list2.add(obj);
    } else {
        list1.add(obj);
    }
}

有没有人有我可以采取的方法来实现这一目标?

4

3 回答 3

2

创建一个这样的方法,然后你可以选择要划分多少个列表

public List<List<Object>> partionList( List<Object> yourList, int numPartitions)
{
   List<List<Object>> resultList = new ArrayList<List<Object>>();
   for(int i = 0; i < numPartitions; i++)
       resultList.add(new ArrayList<Object>());

   int counter = 0;
   for(Object o:yourList)
   {
       resultList.get(counter % numPartitions).add(o);           
       counter++;
   }
   return resultList
}
于 2013-06-26T23:19:58.733 回答
1
于 2013-06-26T23:11:17.947 回答
1

我想你的意思是这样的:

int i=0;
for (Object obj:list) {
   EvenLists.get(i % evenLists.size()).add(obj);
   i++;
}
于 2013-06-26T23:18:51.980 回答