Получить список ArrayList

Я хочу создать ArrayList данных и вернуть его через точку отдыха. Я пробовал это:

@Service
public class CardBrandsListService {

    public ArrayList<String> getCardBrandsList() {

        ArrayList<String> list = new ArrayList<String>();

        list.add("visa");
        list.add("master");
        list.add("Intl Maestro");
        list.add("amex");

        return list;
    }
}

Конечная точка отдыха:

@GetMapping("/card_brand/list")
    public ResponseEntity<?> getCurruncy() {
        return ResponseEntity.ok(cardBrandsListService.getCardBrandsList().entrySet().stream()
                .map(g -> new CardBrandsListDTO(g.getValue())).collect(Collectors.toList()));
    }

ДТО:

public class CardBrandsListDTO {

    private String card_brand;

    public String getCard_brand() {
        return card_brand;
    }

    public void setCard_brand(String card_brand) {
        this.card_brand = card_brand;
    }
}

Но я получаю сообщение об ошибке: The method entrySet() is undefined for the type ArrayList<String> Как правильно отображать ArrayList?

Звоните stream() прямо по списку.

Arnaud 09.04.2019 17:15

Я получаю сейчас Метод getValue() не определен для типа String

Peter Penzov 09.04.2019 17:18

Список не является картой, у карты есть метод entrySet, а у списка нет. Насколько это сложно понять?

jwenting 09.04.2019 17:32

Как исправить следующую ошибку?

Peter Penzov 09.04.2019 17:33

Плохой заголовок. Перепишите, чтобы резюмировать вашу конкретную техническую проблему.

Basil Bourque 10.04.2019 02:40
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
5
141
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваша конечная точка отдыха должна выглядеть следующим образом:

@GetMapping("/card_brand/list")
public ResponseEntity<List<CardBrandsListDTO>> getCurruncy() {
    return ResponseEntity.ok(cardBrandsListService.getCardBrandsList().stream()
            .map(g -> new CardBrandsListDTO(g)).collect(Collectors.toList()));

Вы вызываете entrySet(), который используется для получения набора записей объекта Map (которого у вас нет). Кроме того, внутри функции карты ваша переменная g является строкой (поскольку вы возвращаете ArrayList<String>), поэтому вы можете напрямую передать ее конструктору. И вы также можете напрямую установить правильный тип для ResponseEntity.

ОБНОВИТЬ:

И вам нужен соответствующий конструктор:

public class CardBrandsListDTO {

    private String card_brand;

    public CarBrandsListDTO(String card_brand) {
        this.car_brand = car_brand;
    }

    //getter and setter
}

Кстати, я бы посоветовал переименовать DTO (для понятности), а также поле внутри него (для соблюдения правил именования)

Я получаю конструктор CardBrandsListDTO (String) не определен

Peter Penzov 09.04.2019 17:35

Есть ли решение без добавления конструктора в CardBrandsListDTO?

Peter Penzov 09.04.2019 17:37

Да, это будет выглядеть так: .map(g -> { CardBrandsListDTO dto = new CardBrandsListDTO(); dto.setCard_brand(dto); return dto; }

Michael Altenburger 09.04.2019 17:38

Другие вопросы по теме