ArrayList String для порядка сортировки int - PullRequest
0 голосов
/ 10 января 2019

Мне нужно убедиться, что вкладка «Порядок сортировки по возрастанию» работает. Но когда я сравниваю результат, он не работает из-за однозначного и двузначного числа. Как я могу конвертировать ArrayList в Int? будет ли это работать

        ArrayList<String> obtainedList = new ArrayList<>();
    List<WebElement> elementList = driver.findElements(By.xpath("//mat-table//mat-row/mat-cell[2]"));
    for (WebElement we : elementList) {
        obtainedList.add(we.getText());
    }
    // This is where I should convert array to int ?

    ArrayList<String> sortedList = new ArrayList<>();
    for (String s : obtainedList) {
        sortedList.add(s);
    }

    Collections.reverse(sortedList);
    Collections.sort(sortedList);

    Reporter.log(AddRule + obtainedList + sortedList + " Cloumn is display in  Ascending order");
    Add_Log.info(AddRule + obtainedList + sortedList + " Cloumn is display in  Ascending order");
    List<String> labels = elementList.stream().map(WebElement::getText).collect(Collectors.toList());
    SortedSet<String> sorted = new TreeSet<>(labels);
    assertThat(labels, contains(sorted));

    Assert.assertTrue(sortedList.equals(obtainedList));

ВЫХОД

№ [5, 7, 8, 10, 11, 12, 19, 22, 92, 96, 98, 99] [10, 11, 12, 19, 22, 5, 7, 8, 92, 96 , 98, 99] Столбец отображается в порядке возрастания

Сортировка не работает из-за однозначного и двузначного числа. Если я преобразую String Array в int, это сработает? как я могу исправить этот код?

Ответы [ 2 ]

0 голосов
/ 10 января 2019

Вы можете проецировать от List<String> до List<Integer> через stream#map, а затем stream#sorted, чтобы отсортировать элементы и, наконец, собрать их в список.

List<Integer> result = obtainedList.stream()
                                   .map(Integer::valueOf)
                                   .sorted() // sort the elements
                                   .collect(Collectors.toList());

или типичный цикл:

List<Integer> sortedList = new ArrayList<>();
for (String s : obtainedList) 
        sortedList.add(Integer.valueOf(s));
Collections.sort(sortedList); //sort the list after accumulating all the elements 
0 голосов
/ 10 января 2019

Конечно, это будет работать, если вы конвертируете obtainedList в List<Integer>.

List<Integer> obtainedList = new ArrayList<>();

for(int i = 0; i < 10; i ++) {
    obtainedList.add(RandomUtils.nextInt(100));
}

Collections.reverse(obtainedList);
Collections.sort(obtainedList);

System.out.print(obtainedList);

enter image description here

...