【发布时间】:2021-12-04 07:39:34
【问题描述】:
我需要创建一个函数 public Collection findEpidemics(List diagnostics, int k, int n) 确定疾病是否为流行病,并返回流行病的列表。如果一种疾病在连续 k 天内发生 n 次以上,我们就说它是流行病。 Diagnosis 类是 public Diagnosis(Disease disease, int day),具有 getDisease() 和 getDay() 函数。
诊断列表如下所示:
Disease cholera = new Disease("cholera");
Disease dengue = new Disease("dengue");
List<Diagnosis> diagnoses = Arrays.asList(
new Diagnosis(cholera, 0), // registered cholera on day 0
new Diagnosis(cholera, 0),
new Diagnosis(cholera, 1),
new Diagnosis(dengue, 2),
new Diagnosis(dengue, 2),
// we have a gap here
new Diagnosis(cholera, 6),
所以我所做的是制作一个包含每天所有疾病发生的 hashmap 集合,因此它可能看起来像这样:{{cholera, 0}=2, {cholera, 1}=1 , {登革热, 2}=2, {霍乱, 6}=1}
public Collection<String> findEpidemics(List<Diagnosis> diagnoses, int k, int n) {
// first we count occurrences
Map<DiagnosisMetric, Long> collect = diagnoses.stream().
collect(Collectors.groupingBy(DiagnosisMetric::new, counting()));
// check for epidemic
for(int i=0; i<collect.size(); i++){
for(int j=0; j<k; j++){
???
}
}
}
我有点卡在检查一种疾病是否是一种流行病,所以我卡在如何循环哈希图并检查某种疾病的发生是否超过 n 连续 k天。
【问题讨论】: