你可以在Java上操纵For Each循环来重复迭代吗?

时间:2016-02-10 18:08:39

标签: java arraylist foreach iteration

我必须做以下事情:

1.-从DB读取一些行(可能超过1) 2.-用数据填充ArrayList 3.-一次调用一行数据的WebService 4.-如果任何行的传输出现问题,请再试3次。

问题在于我使用For Each循环来设置数据而我不知道如果我可以在该循环上重复迭代。

我正在考虑使用常规For循环,如下所述: How does the Java 'for each' loop work? 但我有两个问题:
我怎样才能得到正确的方法来获得"长度"在我的情况下?
在我的情况下,我必须使用方括号[i]?

我应该重新安排代码吗?

这是我的代码简介:

ArrayList<SomeBean> v = new ArrayList<SomeBean>();

while(index < 1000) 
{   
    //Read some data from DB

    //Fill the arraylist

    for(SomeBean s : v)
    {
        if (repeat == 0)
        {
            //Use the Data of the current iteration to invoke Webservice
            String column1 = s.getColumn1();
            String column2 = s.getColumn2();
            String column3 = s.getColumn3();
            ...
        }
        else
        {
            //Don´t use the Data of current iteration, try again with the same data
        }

        try 
        {
            //Invoke WebService and send the data

            if (answer == OK)
            {
                //Print OK
            }
            else
            {
                //Print NOT OK
            }
        }                       
        catch (Exception) 
        {
            //Print the Exception
            repeat++;

           if (repeat > 3)
           {
            repeat = 0; //Go to read a new group of data
            index++;
           }                   
        }
    }
}

1 个答案:

答案 0 :(得分:0)

这是递归的完美任务。这里的想法是,如果逻辑中发生错误并且尝试次数超过预定限制,则失败。否则,它会通过递归调用自身再次尝试。

Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("download.default_directory", "C:\\New_Download");

DesiredCapabilities caps = DesiredCapabilities.chrome();

ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("prefs", prefs);
options.addArguments("--disable-extensions");
caps.setCapability(ChromeOptions.CAPABILITY, options);

WebDriver driver = new ChromeDriver(caps);
driver.get("http://www.google.com");