我想从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()未定义
您知道如何解决此问题吗?
答案 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
方法,这就是它崩溃的原因。