从Rest API获取列表

时间:2019-01-04 14:42:14

标签: java spring-rest

我想从rest 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()未定义

您知道如何解决此问题吗?

3 个答案:

答案 0 :(得分:1)

entrySet()Maps拥有的方法,而不是Lists

仅在列表上直接使用stream()方法,而无需使用entrySet(),就像这样:

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

答案 1 :(得分:1)

您需要将api调用从timezoneService.getTimezoneList().entrySet().stream()更改为timezoneService.getTimezoneList().stream()

列表的api没有entrySet()

答案 2 :(得分:1)

您可以直接在列表上使用流:

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

此外,List接口不包含entrySet方法,这就是它崩溃的原因。