t.me/atinfo_chat Telegram группа по автоматизации тестирования

Сортировка значений response и вывод в нужном виде

exceptions
algorithm
http
java
Теги: #<Tag:0x00007fb2fb3cff90> #<Tag:0x00007fb2fb3cfe50> #<Tag:0x00007fb2fb3cfce8> #<Tag:0x00007fb2fb3cfba8>

(risen) #1

Всем привет,
изучаю java + rest assured
https://github.com/risen777/assuredRestGetValues

Что нужно дописать,чтобы получить в коллекции все только name и year ,а потом отсортировать их и вывести min year + нужный name?
Я пробовал всякие Collection.sort и подобное приводило к разным ошибкам,поэтому привожу,то что у меня рабочее пока что получилось


 @Test
    public void listNamesAndYears() {
        System.out.println("Third test");
        Response response3 =
                given()
                        .log().all()
                        .header("Content-Type", "application/json")
                        .when().get("https://reqres.in/api/unknown");

        String JsonResponse3 = response3.getBody().prettyPrint();
        List<HashMap<String, Object>> valuesList = JsonPath.from(JsonResponse3).getList("data");
        System.out.println(valuesList);
        for (HashMap<String, Object> singleBucket : valuesList) {
            String firstValue = (String) singleBucket.get("name");
            Integer secondValue = (Integer) singleBucket.get("year");
            System.out.println(firstValue);
            System.out.println(secondValue);
            System.out.println(singleBucket);

        }

    }

(Raynor) #2
  Collections.sort(valuesList, new Comparator<HashMap<String, Object>>() {
			@Override
			public int compare(HashMap<String, Object> value1, HashMap<String, Object> value2) {
				return value1.get("year") - value2.get("year");
			}
		});

Не стал возиться с кастованием - я думаю дальше сам разберешься
Это просто основная идея для старта


(Raynor) #3

или если переписать то же самое по-короче

Collections.sort(valuesList, (value1, value2) -> value1.get("year") - value2.get("year"));