java - 从java中的列表创建列表

标签 java collections for-loop arraylist

考虑一个包含 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/

相关文章:

java - 中心裁剪在 gridlayoutmanager Android 中不起作用

使用并发的 Java 性能

java - Collections 类中的方法没有对输入集合进行空检查

php - 改进 PHP 'for' 循环

c - 在没有for的情况下向左旋转C中的数组?

java - Apache Derby ID 列应该自动一一递增 - 但它不会,为什么?

java - 我应该使用 Abstract 或 Interface ...还是从应该扩展的具体类开始?

java - 如何同步添加元素和从队列中删除元素

python - 当列表中有两个连续相似的数字时,如何打破循环?

java - Guice:使用注入(inject)器?