class County{
private LocalDate date;
private String county;
private String district;
private String region;
private Integer cases;
// getters and setters and constructor
}
class District{
private LocalDate date;
private String district;
private String region;
private Integer cases;
// getters and setters and constructor
}
我有一个List<County> countyData
和List<District> districtData
,我想使用一种方法来同时播放它们。我已经能够通过编写两个单独的方法成功地流化它们,但这不是DRY(不要重复自己)。我想写一种方法可以在两个对象的列表上执行这些流。
这是对我有用的,但不是干的。
List<LocalDate> labels = countyData.stream().map(c -> c.getDate()).collect(Collectors.toList());
List<Integer> totalCases = countyData.stream().map(c -> c.getTotalCases()).collect(Collectors.toList());
和
List<LocalDate> labels = districtData.stream().map(c -> c.getDate()).collect(Collectors.toList());
List<Integer> totalCases = districtData.stream().map(c -> c.getTotalCases()).collect(Collectors.toList());
这里是我尝试创建一个处理两种方法的方法
public <T> void genericMethod(List<T> dataList) {
Collections.reverse(dataList);
List<LocalDate> labels = dataList.stream().map(c -> c.getDate()).collect(Collectors.toList());
List<Integer> totalCases = dataList.stream().map(c -> c.getTotalCases()).collect(Collectors.toList());
}
但是我收到以下警告:Cannot infer type argument(s) for <R> map(Function<? super T,? extends R>)
只需使用多态性(这就是面向对象编程的目的:使您的County
和District
类实现包含两个方法getDate()
和getTotalCases()
的公共接口)>
所以您的方法变为:
public void genericMethod(List<YourInterface> dataList)