例如,如何从第二行开始迭代2D arraylist?

时间:2019-06-21 09:05:21

标签: java arrays 2d

因此,我创建了一个2D字段,该字段按三位一组填充了标识符。

是否有一种方法可以从第4行开始迭代?如果是,怎么办? 这是二维场的图像。

enter image description here

我尝试了每个循环,但似乎无法正常工作。

enter image description here

这是我无法弄清楚的代码,例如如何获得第四行。

6 个答案:

答案 0 :(得分:3)

不是使用foreach,而是使用起始索引为3的经典for循环。

 var connString = ConfigurationManager.ConnectionStrings["ACIGPSDBConnection"].ConnectionString;
                using (var db = new ACIGPSDBConnection(connString))
                {
                    if (!string.IsNullOrWhiteSpace(myQueueItem))
                    {
                        var breadCrumbList = JsonConvert.DeserializeObject<IList<BreadCrumb>>(myQueueItem);
                        if (breadCrumbList != null && breadCrumbList.Count() > 0)
                        {

                            var activeRouteJob = from j in db.Jobs
                                                 join rj in db.RouteJobs on j.Id equals rj.JobID
                                                 where j.IsActive == true && j.EndDate > DateTime.UtcNow &&
                                                      breadCrumbList.Any(a => a.CarrierId == rj.CarrierID)
                                                 select new RouteJobDelivery
                                                 {
                                                     RouteJobId = rj.Id,
                                                     StartDate = j.StartDate,
                                                     EndDate = j.EndDate
                                                 };
 <add name="ACIGPSDBConnection"
         connectionString="metadata=res://*/ACIGPSDataContext.csdl|res://*/ACIGPSDataContext.ssdl|res://*/ACIGPSDataContext.msl;
         provider=System.Data.SqlClient;provider connection string=&quot; 
         Data source=sqlsrv-scu-dev.database.windows.net;
         initial catalog=md_ACI-dev;user id=;password=;
         MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

答案 1 :(得分:3)

对不起,您的图片丢失了,但是我建议像这样,在行循环中选择索引

int startRow = 2;
for (int i = startRow; i < board.length; i++) {
        for (int j = 0; j < board[i].length; j++) {
            board[i][j] = i + j;
        }
    }

答案 2 :(得分:2)

我认为这会起作用

int mat[][] = { {10, 20, 30, 40, 50, 60, 70, 80, 90},
                {15, 25, 35, 45},
                {27, 29, 37, 48},
                {32, 33, 39, 50, 51, 89},
              };


    for(int i=3; i<mat.length; i++) {
        for(int j=0; j<mat[i].length; j++) {
            System.out.println("Values at arr["+i+"]["+j+"] is "+mat[i][j]);
        }
    }

答案 3 :(得分:1)

是的,您可以做到。如果要从第4行开始,请通过将初始循环指定为3来启动迭代。 for(int i=3 ; i < (maximum number of rows initiated at the beginning of the array); i++)

一般来说,代码如下

for(i=the row which you want to start from; i < maximum number of rows initiated at the beginning of the array; i++){ for(j=0; j<maximum number of columns initiated at the beginning of the array; j++) { System.out.println(arr[i][j]); } }

答案 4 :(得分:1)

在这种情况下,您有两种选择。 传统上,您可以使用“ for”循环,例如:

for (int i=0, i<10, i++) {
  *commands here*
}

int i=0是您的初始条件,您可以将0替换为您要开始的索引。请记住,数组索引从0开始,所以第四个元素将是索引3

i<10控制希望循环播放的次数,在这种情况下为10次。

i++是您希望增加索引值的方式

当然,您可以使用while,但是在这种情况下,for循环通常更好。我建议您查找它们,因为它们具有一些我这里未介绍的有用功能。

您的第二选择是使用流:

Arrays.toStream(myArray)
   .drop(4)   // drop the first four elements
   .other processing

在某些情况下,流的“效率”可能较低,但我发现它们更具可读性。

答案 5 :(得分:0)

如果只想获取特定的行,可以将外部循环更改为基本for循环,如上所述。 如图所示:-

    private Integer[][] comparedProducts = new Integer[][]{
            {1,2,3},
            {4,5,6},
            {7,8,9},
            {10,11,12}
    };

    for(int i=3;i<size;i++){
      for(int a:comparedProducts[i]){
        //DO work
      }
    }

此外,您可以使用ArrayList代替array,然后可以使用ArrayList的subList方法。

    List<List<Integer>> comparedProducts = new ArrayList<>();
    public void initialiseList(){
        comparedProducts.add(Arrays.asList(1,2,3));
        comparedProducts.add(Arrays.asList(4,5,6));
        comparedProducts.add(Arrays.asList(7,8,9));
    }


  for(List comparedProduct:comparedProducts.subList(3,comparedProducts.size()){
    // One more foreach loop for each element
    // Or do some Work.
  }

ArrayList有很多非常有用的方法。因此,如果更改不多,请使用ArrayList。