考虑一个包含 60 个或更多元素的列表。我想将其分成 6 个列表并将它们添加到列表中。我这样做是因为我想以表格格式将数据发送到 jsp。不管怎样,我正在这样做,但想知道我这样做的方式是否好,因为我相信存在更好的东西。下面是我的代码。
List<String> rollsAll = // from db
List<List<String>> rolls = new ArrayList<List<String>>();
int i=0;
for(String roll:rollsAll){
if(i<10)
{
if(i==0)
{
rolls.add(new ArrayList());
}
rolls.get(0).add(roll);
i++;
continue;
}
else if(i<20)
{
if(i==10)
{
rolls.add(new ArrayList());
}
rolls.get(1).add(roll);
i++;
continue;
}
else if(i<30)
{
if(i==20)
{
rolls.add(new ArrayList());
}
rolls.get(2).add(roll);
i++;
continue;
}else if(i<40)
{
if(i==30)
{
rolls.add(new ArrayList());
}
rolls.get(3).add(roll);
i++;
continue;
}else if(i<50)
{
if(i==40)
{
rolls.add(new ArrayList());
}
rolls.get(4).add(roll);
i++;
continue;
}else if(i<60)
{
if(i==50)
{
rolls.add(new ArrayList());
}
rolls.get(5).add(roll);
i++;
continue;
}else if(i<70)
{
if(i==60)
{
rolls.add(new ArrayList());
}
rolls.get(6).add(roll);
i++;
continue;
}else if(i<80)
{
if(i==70)
{
rolls.add(new ArrayList());
}
rolls.get(7).add(roll);
i++;
continue;
}else if(i<90)
{
if(i==80)
{
rolls.add(new ArrayList());
}
rolls.get(8).add(roll);
i++;
continue;
}else if(i<100)
{
if(i==90)
{
rolls.add(new ArrayList());
}
rolls.get(9).add(roll);
i++;
continue;
}else if(i<110)
{
if(i==100)
{
rolls.add(new ArrayList());
}
rolls.get(10).add(roll);
i++;
continue;
}else if(i<120)
{
if(i==110)
{
rolls.add(new ArrayList());
}
rolls.get(11).add(roll);
i++;
continue;
}
}
感谢和问候
最佳答案
一次只需遍历列表 10 个项目,然后使用 List.subList
获取您需要的 block 。
下面的代码执行此操作并防御性地复制子列表。
int nPerSublist = 10;
List<String> rollsAll = // from db
List<List<String>> rolls = new ArrayList<List<String>>(
(rollsAll.size() + nPerSublist - 1) / nPerSublist);
for (int i = 0, n = rollsAll.size(); i < n; i += nPerSublist) {
rolls.add(new ArrayList<String>(rollsAll.subList(i, Math.min(i + nPerSublist, n))));
}
关于java - 从java中的列表创建列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16946645/