2017-02-09 3 views
-2

Я делаю несколько тестов для проверки selenium, и я получаю список веб-элементов, используя приведенный ниже код.сортировка списка значений в java после преобразования строки в целое число

List<WebElement> list = GlobalVariables.BrowserDriver.findElements(By.xpath(".//*[@id='Tbls_T']/tbody/tr/td[4]")); 

, а затем я итерация, что веб-элемент и получать значения, используя

for (WebElement webElement : list) { 

     System.out.println(webElement.getText()); 

} 

так я получаю значение в виде строки. и выборочные значения дают ниже

-100.000 -80.000 0,100 87,270 3,000.000

Я хочу, чтобы проверить эти значения в порядке сортировки или нет? для этого я думаю, что я должен преобразовать в целое число, а затем проверить, используя какой-то метод сортировки, я думаю. для этого я попытался преобразовать значения в список integer, а затем использовать некоторый алгоритм сортировки, такой как Guava, для проверки сортировки. из-за отрицательных значений я сталкиваюсь с трудностями для этого.

Есть ли способ проверить порядок сортировки для вышеуказанной проблемы и проверить порядок значений. ?

благодарит заранее.

+0

гуавы не алгоритм сортировки! Во всяком случае, вы на * Java 8 *? – CKing

+0

Используйте подбор коллекции. – Sedrick

+0

@SedrickJefferson Nope. Не тот ответ, который ожидает OP. – CKing

ответ

0

Вы хотите просто проверить, что входящий список отсортирован или нет. Вы сравниваете предыдущее значение с текущим значением. Если предыдущее значение больше текущего значения, список не сортируется.

Пример кода:

WebElement prev=null; 
    boolean isSorted = true; 
    for (WebElement currentWebElement : list) { 

     if (prev == null) { 
      prev = currentWebElement; 
      continue; 
     } else { 

      if (Double.compare(Double.parseDouble(prev.getText().replaceAll(",", "")), 
        Double.parseDouble(currentWebElement .getText().replaceAll(",", ""))) > 0) { 
       isSorted = false; 
       break; 
      } 

      prev = currentWebElement; 

     } 

    } 
+0

отлично .. это сработало хорошо .. большое вам спасибо за помощь Sumit. – asl

0
  1. создать 2 копии данных
  2. преобразовать первый в целые и сортировать его
  3. преобразовать второе в целых числах и оставить его
  4. проверить, если два списка равны, если они, то ваш список сортируется
+0

Я не могу преобразовать в целое число из-за отрицательных значений. получение исключения. например, я получаю -100,000, и я попробовал это преобразовать это значение Integer.ParseInt (-100000); но получение исключения из-за '-' – asl

+0

, потому что их не целые числа вот решение: String s = "- 100,000"; s = s.replaceAll (",", "."); // заменить, с. s = Double.parseDouble (s); это должно исправить это –

0

Пожалуйста, используйте другой список парных и Collections.sort(). Возможно, вам придется удалить запятые из строк

public class ConvertToIntSort 
{ 
    public static void main(String[] args) 
    { 

     String[] strlist = {"-100000","0.100", "2" , "3000.000","87.270", "-80000" }; 
     java.util.List<String> stringlist = Arrays.asList(strlist); 
     java.util.List<Double> intList = new ArrayList<Double>(); 
     for(String str : stringlist) 
     {   
     //converting and adding to double list 
     intList.add(Double.valueOf(str)); 

     } 
     //Sorting is done here    
     Collections.sort(intList); 

     for(Double num : intList) 
     { 
      System.out.println(num);   

     } 

    } 
}