java—有没有一种方法可以一次又一次地从arraylist中获取前n个元素,然后获取下n个元素?

vlf7wbxs  于 2021-07-08  发布在  Java
关注(0)|答案(3)|浏览(252)

这个问题在这里已经有答案了

将列表划分为n个大小的列表的有效方法(14个答案)
上个月关门了。
我有一个在arraylist中存储字符串的代码

ArrayList<String> cars = new  ArrayList<String>();
cars.add("Volvo");
cars.add("BMW");
cars.add("Ford");
cars.add("Mazda");
cars.add("Honda");
cars.add("Tesla");

有没有一种方法可以让我们的产品脱颖而出
沃尔沃、宝马
福特、马自达
本田、特斯拉
而不是[沃尔沃,宝马,福特,马自达,本田,特斯拉]
我的问题是每n个元素,而不仅仅是2个
我的想法是为每n个元素创建一个新字符串,而不是将其存储在一个数组中

rjee0c15

rjee0c151#

在下面的代码中,子列表将是汽车每n个元素的列表。

ArrayList<String> cars = new ArrayList<>();
        int n = 2;
        for(int i = 0; i < (cars.size()+1)/n; i++) {
            int lastIndex = (i*n)+n;
            if(lastIndex > cars.size()) {
                lastIndex = cars.size();
            }
            ArrayList<String> subList = (ArrayList<String>) cars.subList(i*n, lastIndex);
            System.out.println(subList);
        }
lztngnrs

lztngnrs2#

假设您只需要以这种方式格式化输出,那么可以使用模运算。对于n的每一个倍数,打印一行而不是逗号。像这样:

ArrayList<String> cars = new  ArrayList<String>();
        cars.add("Volvo");
        cars.add("BMW");
        cars.add("Ford");
        cars.add("Mazda");
        cars.add("Honda");
        cars.add("Tesla");
        int n = 2; //this can be changed with user input
        for (int i = 0; i < cars.size(); i++)
        {
            System.out.print(cars.get(i));
            if ((i+1) % n == 0)
            {
                System.out.println();
            }
            else
            {
                System.out.print(", ");
            }
        }
laximzn5

laximzn53#

根据您想要输出结果的方式,您可以简单地使用子列表。

ArrayList<String> cars2 = new ArrayList<String>(cars.subList(1, 2));

相关问题