How to wait for the results to get displayed within a for loop while running selenium script?

I have used below code:

```
 for (k = 1; k < s2.getRows(); k++)
 {
  //redeem flow
  d1.findElementByXPath("html/body/div[2]/div/div/div/div[2]/ul/li[3]/a").click();
  d1.findElementByXPath("html/body/div[2]/div/div/div/div[2]/ul/li[3]/ul/li[2]/a").click();
  d1.findElement(By.xpath("html/body/div[3]/div[2]/form/div[1]/div[2]/input")).sendKeys(s2.getCell(0, k).getContents());

  //pause for list to be populated
  try 
  {
   Thread.sleep(1000L);
  }
  catch (Exception e)
  {
  }

  // Get all items in autocomplete list
  List<WebElement> items1 = d1.findElements(By.xpath("html/body/ul/li[3]/a"));

  // Look for item 
  for( i= 0; i <items1.size();i++)
  {
   if(items1.get(i).getText().contains(s2.getCell(0, k).getContents()))
   {
    items1.get(i).click();
    break; 
   }
  }  

  //calendar handling
  d1.findElementById("checkin").click();
  d1.findElementByXPath("html/body/div[8]/div[2]/div/a/span").click();
  d1.findElementByXPath("html/body/div[8]/div[2]/table/tbody/tr[3]/td[3]/a").click();

  //Select Room Type
  d1.findElementById("roomtype").sendKeys("Single");

  //Occupant's Nationality  
  d1.findElementById("nationality").sendKeys("India");

  //Click search button
  d1.findElementByXPath("html/body/div[3]/div[2]/form/div[5]/input").click();

  //after 2 min wait                 
  d1.manage().timeouts().implicitlyWait(2, TimeUnit.MINUTES);
 } 

```

`d1.manage().timeouts().implicitlyWait(2, TimeUnit.MINUTES);` This statement does not ensure wait for the 2 minutes which is my requirement.