【问题标题】:Is there a way to get the first n elements from a ArrayList then the next n elements over and over again? [duplicate]有没有办法从 ArrayList 中获取前 n 个元素,然后一遍又一遍地获取接下来的 n 个元素? [复制]
【发布时间】:2020-11-23 23:45:19
【问题描述】:

我有将字符串存储在 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 个元素创建一个新字符串,而不是将其存储在数组中

【问题讨论】:

标签: java


【解决方案1】:

假设您只需要以这种方式格式化输出,则可以使用模数。对于 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(", ");
            }
        }

【讨论】:

    【解决方案2】:

    根据您希望如何输出结果,您可以简单地使用子列表。

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

    【讨论】:

      【解决方案3】:

      在下面的代码中,子列表将是汽车每 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);
              }
      

      【讨论】:

        猜你喜欢
        • 2014-09-17
        • 2011-02-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多