Получить список из остальных API - PullRequest
0 голосов
/ 04 января 2019

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

@GetMapping("timezone")
    public ResponseEntity<?> getTimezone() {
        return ResponseEntity.ok(timezoneService.getTimezoneList().entrySet().stream()
                .map(g -> new AcquirerTimezoneDTO(g.getKey())).collect(Collectors.toList()));
    }

DTO:

public class AcquirerTimezoneDTO {

    private String timezone;

    public AcquirerTimezoneDTO(String timezone) {
        this.timezone = timezone;
    }

    public String getTimezone() {
        return timezone;
    }

    public void setTimezone(String timezone) {
        this.timezone = timezone;
    }
}

Услуги:

@Service
public class TimezoneService {

    public List<String> getTimezoneList() {

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

        String[] allTimeZones = TimeZone.getAvailableIDs();

        Arrays.sort(allTimeZones);

        for (int i = 0; i < allTimeZones.length; i++) {
            list.add(allTimeZones[i]);
        }

        return list;
    }
}

Но я получаю ошибку для .entrySet() Метод entrySet () не определен для типа List

Знаете ли вы, как я могу решить эту проблему?

Ответы [ 3 ]

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

Вам нужно изменить вызов API с timezoneService.getTimezoneList().entrySet().stream() на timezoneService.getTimezoneList().stream().

API списка не имеет entrySet()

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

Вы можете использовать поток непосредственно в списке:

@GetMapping("timezone")
public ResponseEntity<?> getTimezone() {
    return ResponseEntity.ok(timezoneService.getTimezoneList().stream()
            .map(g -> new AcquirerTimezoneDTO(g.getKey())).collect(Collectors.toList()));
}

Кроме того, интерфейс List не включает метод entrySet, поэтому он прерывается.

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

entrySet() - это метод, который есть у Maps, а не Lists.

Просто используйте метод stream() непосредственно в списке, без entrySet(), например:

return ResponseEntity.ok(timezoneService.getTimezoneList().stream()
                .map(g -> new AcquirerTimezoneDTO(g.getKey())).collect(Collectors.toList()));
...